安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy
来源:互联网 发布:linux下svn 钩子函数 编辑:程序博客网 时间:2024/05/01 13:18
全栈工程师开发手册 (作者:栾鹏)
安卓教程全解
每一个Activity的状态是由它在Activity栈中所处的位置所决定的, Activity其是当前所有正在运行的Activity的后进先出的集合。 当一个新的Activity启动时 , 它就变为Activity 状态, 并被移动到栈顶 。 如果用户使用Back(返回)按钮返回到了刚才的Activity, 或者前台Activity被关闭了, 那么栈中的下一个Activity 就会移动到栈顶 ,变为活动状态。
这里进行以下操作演示窗口的生命周期:
1、启动activity1,点击activity1中的控件进入activity2,
2、点击手机home键,切换到手机主界面。
3、进入已经打开的activity2
4、点击返回键,关闭activity2,返回到activity1。
通过以上几步,了解窗口的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onSaveInstanceState、onPause、onStop、onDestroy各阶段的执行触发点。
activity2的窗口代码为
public class Activity2 extends Activity{ //完整生存期开始时调用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //调用基类方法 setContentView(R.layout.activity2); //setContentView可以通过扩展布局资源来对用户界面进行布局 Log.v("生命周期", "完整生存期开始"); } //在onCreate方法完成后调用,用户恢复UI状态 @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); //从savedInstanceState恢复UI状态 //这个bundle也被传递给onCreate. //自activity上次可见之后,只有当系统终止了该activity时,才会被调用 Log.v("生命周期", "恢复UI状态"); } //在随后的activity进程的可见生存期之前调用 @Override public void onRestart(){ super.onRestart(); // 加装载改变,知道activity在此进程中已经可见 Log.v("生命周期", "重启"); } //在可见生存期(可见不一定聚焦)的开始时调用 @Override public void onStart(){ super.onStart(); //既然activity可见,就应用任何要求的UI Change Log.v("生命周期", "启动"); } //在activity状态生存期(前台聚焦期)开始时调用 @Override public void onResume(){ super.onResume(); //恢复activity需要,但是当它处于不活动状态时被挂起的暂停的UI更新、线程或进程 //在activity状态生命周期结束的时候调用,用来保存UI状态的改变 Log.v("生命周期", "恢复"); } // 把UI状态改变保存到savedInstanceState @Override public void onSaveInstanceState(Bundle savedInstanceState) { //如果进程在运行时被终止或被重启,那么这个Bundle会保存UI状态,并将被传递给onCreate和onRestoreInstanceState用来恢复UI //onPause前会调用此函数 super.onSaveInstanceState(savedInstanceState); Log.v("生命周期", "保存UI状态"); } // 在activity状态生存期(前台聚焦期)结束时调用 @Override public void onPause(){ // 挂起不需要更新的UI更新、线程或者cpu密集的进程 //当activity不是前台的活动状态的activity时 super.onPause(); Log.v("生命周期", "暂停"); } //在可见生存期(可见不一定聚焦)结束时调用 @Override public void onStop(){ // 挂起不需要的UI更新、线程或处理(传感器监听器、GPS,定时器、service) //当activity不可见时,保存所有的编辑或者状态改变,因为在调用这个方法后,进程可能会被禁止 super.onStop(); Log.v("生命周期", "停止"); } //在完整生存期结束时调用 @Override public void onDestroy(){ // 清理所有的资源,包括结束线程、关闭数据库连接等 super.onDestroy(); Log.v("生命周期", "销毁"); }}
activity1的窗口函数为
public class Activity1 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity1); //点击控件,切换窗口 TextView tv = (TextView)findViewById(R.id.activity1_text1); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tosub(); } }); } //切换到窗口2 public void tosub() { Intent myintent = new Intent(); myintent.setClass(Activity1.this,Activity2.class); startActivity(myintent); //启动新页面 }}
运行打印输出如下:
1、从activity1进入activity2,依次启动了onCreate、onStart、onResume函数
2、点击键盘后面键,使app进入后台,依次启动了onPause、onSaveInstanceState、onStop
3、从手机home界面重新进入已打卡的app,依次已启动了onRestart、onStart、onResume
在activity2窗口中点击物理返回键,关闭activity2,依次启动了onPause、onStop、onDestroy
- 安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy
- onCreate & onStart & onResume & onStop & onPause & onDestroy & onRestart & onWindowFocusChanged
- Activity生命周期:onCreate onStart onResume onPause onStop onDestory (1) 启动Activity: onCreate onStart onR
- onPause onStop onStart onResume
- [Android] Activity 生命周期 OnStart&OnResume OnPause&OnStop 具体区别
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?(转)
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- 创建类ff和对象
- HDU-1000-A + B Problem
- Android 中编译ffmpeg
- 洛谷 [P2296] 寻找道路
- 虚拟机下模拟内网APP欺骗(小白)
- 安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy
- 一类关于括号匹配的问题 区间dp
- python-028
- UVa11800
- Linux 变量的介绍和创建 —— env,set,export 命令
- knockout 数组的处理
- Test 2017.10.11
- 线程同步:读写锁(四)
- iOS 关于Category