Activity的生命周期

来源:互联网 发布:淘宝联盟推广位怎么设 编辑:程序博客网 时间:2024/06/06 19:28

Activity的生命周期


活动的状态

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

活动的生存期

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

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

完整生存周期

  • onCreate()
  • onDestroy()

可见生存周期

  • onStart()
  • onStop()

前台生存周期

  • onPause()
  • onResume()

设备旋转前保存数据

@Overrideprotected 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
原创粉丝点击