生命周期
■ 基本操作
启动: oncreate onstart onresume
back: onPause onStop onDestroy
home: onPause onStop
home后的启动(未销毁): onRestart onStart onResume
已销毁后的启动:onCreate onStart onresume
横纵屏???: onSaveInstanceState onPause onStop onDestroy onRestoreInstanceState onCreate onStart onResume
■ 物理切割
可见阶段: onStart onRestart onStop (可视的获取与失去)
前台阶段: onResume onPause (焦点的获取与失去)
其他阶段: onCreate onDestroy
http://blog.chinaunix.net/uid-24410388-id-3855498.html
■ 过程详解
OnCreate(state)
启动时。被销毁后再启动时。
交换到后台,一定时间内回到前台不会被销毁。
横纵屏切换,默认是系统强制销毁并重建
OnSaveInstanceState
系统未经你许可,并且可能或者说容易 被系统销毁activity的场合,会调用该方法。系统的责任来提供机会让你保存你的数据
例: HOME 启动其他activity 电源闭屏 横纵屏切换
如果我们没有覆写onSaveInstanceState()方法, 此方法的默认实现会自动保存activity中的某些状态数据, 比如activity中各种UI控件的状态.。android应用框架中定义的几乎所有UI控件都恰当的实现了onSaveInstanceState()方法,因此当activity被摧毁和重建时, 这些UI控件会自动保存和恢复状态数据. 比如EditText控件会自动保存和恢复输入的数据,而CheckBox控件会自动保存和恢复选中状态.开发者只需要为这些控件指定一个唯一的ID(通过设置android:id属性即可), 剩余的事情就可以自动完成了.如果没有为控件指定ID, 则这个控件就不会进行自动的数据保存和恢复操作。
↑ 应该只适用于类似屏幕横纵屏切换的这种自动重创动作。刚测试了一下,确实是这样的,指定id则可以自动保存重建,否则不可以.
有时候在onPause前调用,有时候在onPause后调用。
OnSaveInstanceState在需要空出内存给当前activtiy的时候执行。
onPause是不可见的时候被调用。
onRestoreInstanceState
可能成为现实,的确被销毁的场合才会被调用。与save非1v1模式。参数也会传递到oncreate(意味着先于oncreate),可由oncreate进行还原。
经典例,编辑短信的时候打游戏应用了,或者来了电话,半个小时后短信activity已被销毁。重建时候短信还原。
横竖屏切换时候activity的生命周期?
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法