生命周期

■ 基本操作

启动: 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方法

 

posted @ 2016-07-08 11:28  mlrs  阅读(219)  评论(0编辑  收藏  举报