Activity生命周期总结

来源:互联网 发布:经期 知乎 编辑:程序博客网 时间:2024/06/07 09:12

ActivityAndroid应用程序的四大组件之一,它负责Android应用程序的用户界面。

一个用户程序一般会包括若干个Activity,每一个Activity组件负责一个用户界面的展现。

一个最简单的完整的Activity生命周期会按照如下顺序回调:onCreate-> onStart -> onResume -> onPause -> onStop ->onDestroy


Activity生命周期的4种状态


1.活动(Active/Running)状态

Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity处于活动(Active)或运行(Running)状态。

2.暂停(Paused)状态

Activity失去焦点但仍对用户可见(如在它之上有另一个透明的ActivityToastAlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。

3.停止(Stopped)状态

完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。

4.非活动(Dead)状态

Activity尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity,可以在程序中调用"finish"方法。

如果是(按根据内存不足时的回收规则)被系统回收,可能是因为内存不足了

内存不足时,Dalvak虚拟机会根据其内存回收规则来回收内存:

1.先回收与其他ActivityService/IntentReceiver无关的进程(即优先回收独

立的Activity)因此建议,我们的一些(耗时)后台操作,最好是作成Service的形式

2.不可见(处于Stopped状态的)Activity

3.Service进程(除非真的没有内存可用时会被销毁)

4.非活动的可见的(Paused状态的)Activity

5.当前正在运行(Active/Running状态的)Activity


Activity生命周期的3个嵌套循环:


1.Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束

2..Activity的可视生命周期:从调用onStart()到相应的调用onStop()

在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,onStop()中注销。

3.Activity的前台生命周期:从调用onResume()到相应的调用onPause()