1.onStart()和onResume()/onPause()和onStop()的区别?
onStart()
当activity对于用户可见时调用,在onResume()之前,在activity回到前台时调用,对应的,在其被隐藏时调用onStop()
onResume()
当activity处于可交互状态时调用,也就是说如果启动的第二个是透明的或者dialog之类的activity,那么第一个activity就不会走到onStart()对应的onStop(),而是走到onResume()对应的onPause()为止了。
2.onSaveInstanceState()方法
调用时机: onSaveInstanceState()会在onPause()或onStop()之前执行,+
(1)当应用遇到意外情况(内存不足,用户直接按home键)由系统直接销毁一个Activity时,onSaveInstanceState()就会调用,但是当用户主动销毁activity,如按back键,或直接执行finish(),这种情况下onSaveInstanceState()就不会执行,因为这种情况下,用户的行为决定了不需要保存Activity的状态。
(2)该方法默认情况下默认会自动保存Activity中的某些状态,比如activity中各种UI的状态,因此在activity被“系统”销毁和重建的时候,这些Ui的状态会默认保存,但是前提条件是Ui控件必须制定id,如果没有指定id的话,UI的状态是无法保存的。
(3)onRestoreInstanceState()不一定会和onSaveInstanceState()成对出现,onSaveInstanceState()需要调用的时,activity可能销毁,也可能没有销毁,只有在activity销毁重建的时候onRestoreInstanceState()才会调用。
3.如何避免在配置改变时activity重建?
在AndroidManifest.xml文件中添加
android:configChanges="orientation|screenSize"
4.activity的四种启动模式
同时存在静态和动态设置时,动态设置的优先级更高
静态设置:manifest.xml
(1)standard:默认activity启动模式,按照启动顺序被依次压入回退栈。
(2)singleTop:栈顶复用模式
(3)singleTask:栈内复用模式
(4)singleInstance:全局唯一模式
动态设置:intent.setFlags( )
(1)New Task
Intent.FLAG_ACTIVITY_NEW_TASK
网友评论