Activity的生命周期

Activity的生命周期


活动的状态

  • 运行状态
    活动处于栈顶
  • 暂停状态
    活动不再处于栈顶,但仍然可见时
  • 停止状态
    活动不再处于栈顶,并且完全不可见
  • 销毁状态
    活动从返回栈移除

活动的生存期

  • onCreate()创建。在活动第一次创建的时候被调用,在这个方法中完成活动的初始化操作,比如加载布局,绑定事件等。
  • onStart()启动。这个方法由活动不可见变为可见的时候调用。
  • onResume()恢复。此时的活动一定位于返回栈的栈顶,并且处于运行状态。
  • onPause()暂停。这个方法在系统准备去启动或者恢复另一个活动的时候调用。
  • onStop()停止。在活动完全不可见的时候调用。启动一个对话框则会调用onPause()不会调用onStop()。
  • onDestroy()销毁。在活动销毁前调用,之后活动处于销毁状态。
  • onRestart()重启。在活动由停止状态变为运行状态,也就是活动被重新启动了。

除了onRestart()方法,其他都是两两相对的。

完整生存周期
  • onCreate()
  • onDestroy()
可见生存周期
  • onStart()
  • onStop()
前台生存周期
  • onPause()
  • onResume()

设备旋转前保存数据

@Override
protected void onSaveInstanceState(Bundle outState)
/*如果系统调用 onSaveInstanceState(),它会在调用 onStop() 之前,并且可能会在调用 onPause() 之前进行调用。
默认实现要求所有activity视图将自身状态数据保存在Bundle对象中*/

activity只有在暂停或停止状态下才可能会被销毁。此时,会调用onSaveInstanceState(…)方法。
调用onSaveInstanceState(…)方法时,用户数据随即被保存在Bundle对象中。然后操作系统将Bundle对象放入activity记录中。

注:每个view要有id才能为期恢复其状态

activity实例被销毁但是状态被保存
系统会先调用 onSaveInstanceState(),然后再使 Activity 变得易于销毁。系统会向该方法传递一个 Bundle,您可以在其中使用 putString() 和 putInt() 等方法以名称-值对形式保存有关 Activity 状态的信息。然后,如果系统终止您的应用进程,并且用户返回您的 Activity,则系统会重建该 Activity,并将 Bundle 同时传递给 onCreate() 和 onRestoreInstanceState()。您可以使用上述任一方法从 Bundle 提取您保存的状态并恢复该 Activity 状态。如果没有状态信息需要恢复,则传递给您的 Bundle 是空值(如果是首次创建该 Activity,就会出现这种情况)。

注:由于无法保证系统会调用 onSaveInstanceState(),因此您只应利用它来记录 Activity 的瞬态(UI 的状态)— 切勿使用它来存储持久性数据,而应使用onPause() 在用户离开 Activity 后存储持久性数据(例如应保存到数据库的数据)。

那么暂存的activity记录到底可以保留多久?用户按了后退键后,系统会彻底销毁当前的activity。此时,暂存的activity记录同时被清除。此外,系统重启或长时间不使用activity时,暂存的activity记录通常也会被清除.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值