Activity生命周期及启动模式
1、Activity被其他Activity覆盖或者锁屏,调用onPause;
2、解除覆盖或开屏,调用onResume;
3、A➡️B:
A.onPause-B.onCreate-B.onStart-B.onResume-A.onStop
4、B➡️A:
B.onPause-A.onRestart-A.onStart-A.onResume-B.onStop-B.onDestory
5、HOME键:
onPause-onStop
5、HOME后返回:
onRestart-onStart-onResume
6、横竖屏切换:
(1)设置 android:configChanges=”orientation” 和不设置这个属性,生命周期表现为重新创建activity
(2)设置 android:configChanges=”orientation|keyboardHidden”,在2.3上表现为不重新创建activity,4.0如下
a)android:targetSdkVersion<=”12”,生命周期表现为不重新创建activity
b)android:targetSdkVersion>”12”,表现为重新创建activity
(3)设置 android:configChanges=”orientation|keyboardHidden|screenSize”,在2.3和4.0上都表现为不重新创建
1)重新创建activity的生命周期
a)2.3上:onSaveInstanceState->onPause->onStop->onCreate->onStart->onRestoreInstanceState->onResume
b)4.0上(3.2我没测试,只测试了4.0的):onPause->onSaveInstanceState->onStop->onCreate->onStart->onRestoreInstanceState->onResume
2)不重新创建activity,只会调用 onConfigurationChanged
启动模式:
standrad:默认情况,允许重复;
singleTop:适合接收通知启动的内容显示页面
A➡️B➡️A:A➡️B➡️A;
B➡️A➡️A:B➡️A➡️不再创建实例,调用onNewIntent方法。
singleTask:适合作为程序入口点。
已有实例则弹出上面的Activity,并调用onNewIntent,没有则创建
A➡️B➡️A:A➡️B➡️B出栈;
B➡️A➡️A:B➡️A➡️不再创建实例,调用onNewIntent方法。
singleInstance:适合需要与程序分离开的页面。
A➡️B:栈1.A➡️栈2.B; 此时按返回键则栈2.B出栈,然后栈2销毁。如果重新进入应用,显示的是栈1.A。