Activity是Android应用程序的四大组件之一,它负责Android应用程序的用户界面。
一个用户程序一般会包括若干个Activity,每一个Activity组件负责一个用户界面的展现。
一个最简单的完整的Activity生命周期会按照如下顺序回调:onCreate-> onStart -> onResume -> onPause -> onStop ->onDestroy。
Activity生命周期的4种状态:
1.活动(Active/Running)状态
当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity处于活动(Active)或运行(Running)状态。
2.暂停(Paused)状态
当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。
3.停止(Stopped)状态
完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。
4.非活动(Dead)状态
Activity尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity,可以在程序中调用"finish"方法。
如果是(按根据内存不足时的回收规则)被系统回收,可能是因为内存不足了
内存不足时,Dalvak虚拟机会根据其内存回收规则来回收内存:
1.先回收与其他Activity或Service/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()。