activity生命周期完整版

来源:互联网 发布:模板支撑计算软件 编辑:程序博客网 时间:2024/05/16 05:23
activity生命周期的方法和介绍activity正常启动的执行顺序
activity正常启动的执行顺序
activity横竖屏会执行的方法顺序
activity四种模式下的执行顺序
activity设置configchanges下的启动顺序
activity两个界面跳转情况下的执行顺序


activity生命周期的方法和介绍:
onCreate
当Activity被第首次加载时执行
onStart
activity变为在屏幕上对用户可见时调用
onResume
activity开始与用户交互时调用
onPause
窗体被交换到后台时执行
onStop
activity被停止并转为不可见阶段及后续的生命周期事件时调用
onRestart
重新启动activity时调用。
onDestroy
activity被完全从系统内存中移除时调用


activity正常启动的执行顺序



activity横竖屏会执行的方法顺序

1、运行Activity,得到如下信息

onCreate-->
onStart-->
onResume-->

2、按crtl+f12切换成横屏时

onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->

3、再按crtl+f12切换成竖屏时,打印信息如下

onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->


activity四种模式下的执行顺序
Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
Activity的四种启动模式:
1. standard
模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。
2. singleTop
如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。
3. singleTask
如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
4. singleInstance
在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。


activity设置configchanges下的启动顺序
1、修改AndroidManifest.xml,把该Activity添加 android:configChanges="orientation"
运行结果:
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->

2、按crtl+f12切换成竖屏时,发现不会再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
onConfigurationChanged-->

3、把android:configChanges="orientation" 改成
android:configChanges="orientation|screenSize|keyboardHidden"(sdk>13时需加上screenSize),切换成竖屏时,就只打印onConfigChanged

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="keyboardHidden"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
4、设置Activity的android:configChanges="orientation|screenSize|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法


activity两个界面跳转情况下的执行顺序

从一个Activity1通过Intent切换到Activity2:
Activity1------->onPause() 
Activity2------->onCreate()  
Activity2------->onStart() 
Activity2------->onResume() 
Activity1------->onStop() 
按Back键返回:
Activity2------->onPause()
Activity1------->onRestart()
Activity1------->onStart() 
Activity1------->onResume()
Activity2------->onStop()
Activity2------->onDestroy()

0 0
原创粉丝点击