activity的生命周期
来源:互联网 发布:sqlserver 2005 dev 编辑:程序博客网 时间:2024/05/18 10:23
activity的生命周期分为典型情况和异常情况。
一.典型情况下生命周期的分析:
1)onCreate:表示activity正在创建,是第一个方法;一般在这个方法中我们做一些初始化工作,如加载界面布局资源;
2)onRestart:表示activity正在重新启动;
3)onStart:表示activity正在被启动,activity已经可见了,但是还没出现在前台,无法和用户交互;
4)onResume:表示activity已经可见了,并且出现在前台开始活动;注意和onStart( )方法的比较;
5)onPause:表示activity正在暂停,onStop将要执行;
6)onStop:表示activity即将停止;
7)onDestroy:表示activity即将被销毁,在此我们可以做一些回收工作,和最终的资源释放;
activity生命周期图:
问题:假设当前A(activity),打开一个新的B(activity),A的onPause和B的onResume哪个先执行呢?
下面我们来用代码测试下:
package com.example.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;public class MainActivity extends Activity { private final static String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onPause() { super.onPause(); Log.d(TAG, "onPause----"); } public void onBtClick(View view){ Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); }}B(activity)package com.example.test;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class SecondActivity extends Activity { private final static String TAG = "SecondActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume()----"); }}
测试结果如下:
12-08 09:02:35.699: D/MainActivity(1510): onPause—-
12-08 09:02:35.931: I/Choreographer(1510): Skipped 80 frames! The application may be doing too much work on its main thread.
12-08 09:02:36.940: D/SecondActivity(1510): onResume()—-
12-08 09:02:37.231: I/Choreographer(1510): Skipped 333 frames! The application may be doing too much work on its main thread.
可知先执行A(activity)的onPause,后执行B(activity)的onResume;
二.异常情况下生命周期的分析:
1.情况1:资源相关的系统配置发生改变导致activity被杀死并重新创建。
由于异常情况下终止的,系统会调用onSaveInstanceState来保存当前activity的状态。它既可能发生在onPause之前,也可能发生在onPause之后。
当activity被重建的时候,系统会调用onRestoreInstanceState,把之前onSaveInstanceState保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法。
2.情况2:资源内存不足,导致低优先级的activity被杀死
1)前台activity——-正在和用户交互的activity,优先级最高;
2)可见但非前台的activity——–比如activity弹出一个对话框;
3)后台activity——-已经被暂停的activity,比如执行了onStop,优先级最低。
- 什么是Activity?Activity的生命周期!
- Activity及Activity的生命周期
- Activity 的生命周期
- Android activity的生命周期
- Activity的生命周期
- Android:Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Activity的生命周期
- Android Activity的生命周期
- Android Activity的生命周期
- Activity的生命周期一
- Android Activity的生命周期
- Activity的生命周期
- Android activity的生命周期
- 多游标嵌套带参数
- 使用BAPI_CONTRACT_CREATE创建采购合同框架协议
- HTML 占满工作区
- ios开发创建证书和描述文件的整个流程
- TextView属性大全
- activity的生命周期
- 物联网随想二三事
- java 中 mongodb的各种操作
- 信息增益、信息增益率、Gini
- Spring:声明式事务管理和JDBCTemplate
- Jsp入门实战上
- win7安装MySQL数据库
- C语言中的动态内存分配
- tabbar的隐藏和出现