activity的生命周期及启动模式
activity的生命周期:
onCreate(),onStart(),onResume(),onPause(),onRestart(),onStop(),onDestory()
对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行:onStart()
当打开一个activity时,调用onCreate()->onStart()->onResume(),如果已经创建,不用调用onCreate(),当打开另一个activity后,一样的步骤,当它遮住原先的activity时,原先的activity会调用onPause()隐藏,当重新返回原先的activity时,第二个activity,onStop()->onDestory();第一个activity如果没有销毁的话,会直接调用onRestart(),否则需重新建立
横竖屏切换时候 activity 的生命周期:
1、不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置 Activity 的 android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置 Activity 的 android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法
4种 activity 的启动模式:
1.standard: 标准模式,一调用 startActivity()方法就会产生一个新的实例。
2.singleTop: 如果已经有一个实例位于 Activity 栈的顶部时, 就不产生新的实例, 而只是调用Activity 中的 newInstance()方法。如果不位于栈顶,会产生一个新的实例。
3.singleTask: 会在一个新的 task(工作任务) 中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
4.singleInstance: 这个跟 singleTask 基本上是一样, 只有一个区别: 在这个模式下的Activity实例所处的 task 中,只能有这个 activity实例,不能有其他的实例。