生命周期
1.onCreate()&onDestroy(),activity的创建与销毁
2.onStart()&onPause(),可见,但还不能进行交互,在onResume()之前未获取到焦点,在onPause之后失去焦点。onPause()中不应进行过多的逻辑操作,会影响界面的切换速度。
3.onResume()&onStop(),获取到焦点,可进行交互
4.onRestart(),activity重启,将会调用onStart(),从不可见慢慢变为可见状态
对于两个activityA和B来说,A启动B:A的onPause()——>B的onCreate()-->onStart()-->onResume——>A的onStop(),B按下返回键返回A:B的onPause()——>A的onRestart()-->onStart()-->onResume——>B的onStop()-->onDestroy()。总结即:涉及到其他的Activity的时候,其他的Activity的生命周期流程是在上一个Activity的onPause和onStop之间完成的。
锁屏:onPause-->onStop(),解锁:onRestart()-->onStart()-->onResume()。
Activity被销毁时数据的保存
activity被异常销毁时可以在onSaveInstanceState()此方法中保存数据,在onRestoreInstanceState()方法中恢复数据。tip:这两个方法要么都执行要么都不执行。
onSaveInstanceState()方法在何时执行:1)按下Home键。2)打开手机任务列表。3)启动另一个activity。4)横竖屏切换。5)锁屏。
onRestoreInstanceState()在何时执行:gc回收后打开activity。如activity被异常关闭时,横竖屏切换后。
android:configChanges="orientation|screenSize" 配置可以使activity在横竖屏切换时不重走生命周期。
onNewIntent()方法在何时被调用
前提:activity已经启动过并处于当前应用的activity栈中。
1.activity启动模式为SingleTop,当前activity处于任务栈的栈顶并将要启动这个activity,此时会调用onNewIntent()方法。
2.activity启动模式为SingleInstance、SingleTask,当前activity处于任务栈中并将要启动这个activity,此时会调用onNewIntent()。
对于Standard启动模式的activity,任何情况下都不会调用onNewIntent()。