Activity生命周期

Activity生命周期指Activity从启动到销毁的过程 Activity表现为三种状态,分别是RESUMED状态 、 PAUSED状态和STOPPED状态:

RESUMED当Activity在屏幕前台运行时(位于当前任务堆栈的顶部),此时该Activity获得了用户的输入焦点。 这个状态也叫Active或Running状态。

PAUSED当它失去焦点但仍然对用户可见时,它处于暂停状态。此时,在它之上有另外一个Activity。这个Activity也许是透明的,或者未能完全遮蔽全屏, 所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并连接至窗口管理器)。但当系统处于极低内存的情况下,仍然可以杀死这个Activity。

STOPPED 如果它完全被另一个Activity覆盖是,它处于停止状态。它仍然保留所有的状态和成员信息。然而它不在为用户可见,所以它的窗口将被隐藏。如果其它地方需要内存,则系统经常会杀死这个Activity。

处于PAUSED或STOPPED状态的Activity,可以被移除出内存,移除的先后顺序是先STOPPED状态的,后PAUSED状态的。一般PAUSED状态的Activity也只是在资源极端不足的情况下,它所运行的进程才会被杀掉。

方法

描述

下一个

onCreate()

在Activity第一启动时调用,你可以在这个方法中初始化数据,设置静态变量,创建客户视图,绑定控件数据等。这个方法入参 为一个捆绑包含了之前状态的对象。随后总是调用onStart方法。

onStart()

onRestart()

Activity已经停止之后会被调用,仅仅发生在之前启动过的Activity上。随后总是调用onStart方法。

onStart()

onStart()

当Activity对用户可见时调用,随后有可能执行2个方法:如果当前Activity展现到前端,用户获取输入焦点,则调用onResume;如果对其进行隐藏,则调用onStop方法。

onResume()或onStop()

onResume()

在Activity启动并与用户进行交互时调用,此时Activity处于栈的顶部。随后总是调用onPause方法。

onPause()

onPause()

在用户打算启动其他Activity时调用,这个方法典型的工作为:提交未保存的数据,停止动画,及停止其他一切消耗CPU的操作。不管应用是否响应速度快,这些都是必须要做的工作,因为下一个Activity将不能恢复,直到这个方法返回为止。

onResume()或onStop()

onStop()

当Activity对用户不可见的情况下调用,也许是发生在Activity正在销毁或者其他Activity恢复将其覆盖的情况。如果Activity再次回到前台与用户交互则调用onRestart,如果关闭Activity则调用onDestroy。

onRestart() 或onDestroy()

onDestory()

在Activity销毁前调用。

 在上图中,可以从三个阶段关注Activity的生命周期:

Ø 整个的生命周期,指的是onCreate(Bundle)和onDestroy()之间过程。Activity在onCreate()设置所有的“全局”状态,在onDestroy()释放所有的资源。

Ø 可见的生命周期,指的是onStart()和onStop()之间的过程。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。

Ø 前台的生命周期,指的是onResume()和onPause()之间的过程。在这段时间里,该Activity处于所有 Activity的最上面,获得了用户焦点。Activity可以经常性地在RESUMED和PAUSED状态之间切换,所以在这些接口方法中的代码应该属于非常轻量级的,避免低效的转换而让用户有等待的感觉。

Activity生命周期几个典型的场景:

1.Activity从被装载到运行。则执行顺序为:onCreate() -> onStart()-> onResume();     这是个典型过程,发生在Activity被系统装载运行时。

2.Activity从运行到暂停,再到继续回到运行。执行顺序为:onPause() -> onResume();     这个过程发生在Activity被别的Activity遮住了部分UI,失去了用户焦点,另外那个Activity退出之后,这个Activity再次重新获得运行。这个过程中该Activity的实例是一直存在

3.Activity从运行到停止。执行顺序为:onPause() -> onStop() ;     这个过程发生在Activity的UI完全被别的Activity遮住了,当然也失去了用户焦点。这个过程中Activity的实例仍然存在。比如,当Activity正在运行时,按HOME键,该Activity就会被执行这个过程。

4.Activity从停止到运行。执行顺序为:onRestart()-> onStart()-> onResume();     处于STOPPED状态并且实例仍然存在的Activity,再次被系统运行时,执行这个过程。这个过程是3的逆过程,只是要先执行onRestart()而重新获得执行。。

5.Activity从运行到销毁。执行顺序为:onPause() -> onStop() -> onDestroy();     这个过程发生在Activity完全停掉并被销毁了,所以该Activity的实例也就不存在了。比如,当Activity正在运行时,按BACK键,该Activity就会被执行这个过程。这个过程可看作是1的逆过程。

6.被清除出内存的Activity重新运行。执行顺序为:onCreate() -> onStart()-> onResume();     这个过程看起来对用户是透明的,并不会知道这个过程的发生,看起来如同1的执行顺序,不同的是如果保存有系统被清除出内出时的信息,会在调用onCreate()时,系统以参数的形式给出,而1中onCreate()的参数为null。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值