码迷,mamicode.com
首页 > 其他好文 > 详细

Activity的生命周期

时间:2017-02-19 15:51:50      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:oar   关闭   内存   span   dia   存在   top   str   没有   

Activity 有三个状态:

l 当它在屏幕前台时,响应用户操作的Activity, 它是激活或运行状态.

l 当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时(如右图), 它处于暂停状态.

l 当它完全被另一个Activity覆盖时则处于停止状态.

 

  * 开启:onCreate()-->onStart()-->onResume()

  * 关闭:onPause()-->onStop()-->onDestroy()

  * 最小化:onPause()-->onStop()

  * 最大化:onRestart()-->onStart()-->onResume()

技术分享


BACK键

      按Back键时,应用程序将结束,将先后调用onPause()->onStop()->onDestory()三个方法。
             再次启动App时,会执行onCreate()->onStart()->onResume()


HOME键

    当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,
    这时候应用程序并没有销毁。而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法

注意:当Activity在后台时候,如果系统内存不够用,后台的Activity很有可能会被强制销毁回收内存的,那么一定会触发onSaveInstanceState(Bundle outState) 方法,我们可以把想保存的数据保存在 outState对象里,等Activity被重新创建执行onCreate(Bundle saveInstanceState) 从参数saveInstanceState再读取保存的数据


ActivityA 打开 ActivityB

  • A:onPause()
  • B:onCreate()
  • B:onStart()
  • B:onResume()
  • A:onStop()
  • 但是,如果ActivityB的样式是Dialog样式,B没有完全遮挡A,ActivityB的生命周期跟刚才一样,但是ActivityA并没有执行onStop()

 

ActivityB 返回 ActivityA

依次会执行:

  • B:onPause()
  • A:onRestart()
  • A:onStart()
  • A:onResume()
  • B:onStop()
  • B:onDestory()

横竖屏切换activity的生命周期

  * 先销毁activity,然后在重新创建一个新的activity页面

  * 固定activity的屏幕朝向 screenOrientation

  * landscape :横屏

  * portrait :竖屏,默认方向

  * sensor :自适应

  * 使activity不敏感屏幕朝向的变化

  * android:configChanges="orientation|keyboard|screenSize"

 

Activity的生命周期

标签:oar   关闭   内存   span   dia   存在   top   str   没有   

原文地址:http://www.cnblogs.com/loaderman/p/6415763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!