【Android源码 栏目提醒】:网学会员--在 Android源码 编辑为广大网友搜集整理了:android应用程序优先级 - 操作系统绩等信息,祝愿广大网友取得需要的信息,参考学习。
Android 应用程序的生命周期是由
Android 框架进行管理,而不是由应用程序直接控制。
通常,每一个应用程序(入口一般会是一个 Activity 的 onCreate 方法) ,都会占据一个进程Process。
当系统记忆体即将不足的时候,会依照优先级自动进行行程process的回收。
不管是使用者或开发者,都无法确定的应用程序何时会被回收。
一个 Activity 类除了 OnCreate 函式之外,还预先定义了 OnPause暂停行程时的行为、OnResume继续行程时的行为等等的基本行为,当从一个 Activity 切换到另一个Activity 的时候,原本的 Activity 将经过一连串的状态改变。
开发者可以在程序中添加一些各状态相对应的流程,每次 Activity 改变状态时,就会执行相对应的流程。
要让使用者有好的使用经验,Activity 需要在各个周期点上负责保管状态、恢复状态、传送资料等工作。
Activity 的状态
Android 的虚拟机VM是使用堆叠Stack based 管理。
主要有四种状态: Active 活动 Paused 暂停 Stopped 停止 Dead 已回收或未启动Active 活动Active状态是使用者启动应用程序或 Activity 后,Activity 运行中的状态。
在
Android 平台上,同一个时刻只会有一个 Activity 处于活动Active或运行Running状态。
其他的 Activity 都处于未启动Dead、停止Stopped、或是暂停Pause的状态。
Paused 暂停Paused状态是当 Activity 暂时暗下来,退到背景画面的状态。
当我们使用 Toast、AlertDialog、或是电话来了时,都会让原本运行的 Activity 退到背景画面。
新出现的 Toast、AlertDialog 等界面元件盖住了原来的 Activity 画面。
Activity 处在Paused状态时,使用者无法与原 Activity 互动。
Stopped 停止Stopped状态是有其他 Activity 正在执行,而这个 Activity 已经离开萤幕,不再动作的状态。
通过长按Home钮,可以叫出所有处于Stopped状态的应用程序列表。
在Stopped状态的 Activity,还可以通过Notification来唤醒。
Dead 已回收或未启动Dead状态是 Activity 尚未被启动、已经被手动终止,或已经被系统回收的状态。
要手动终止 Activity,可以在程序中调用finish”函数。
如果是被系统回收,可能是因为记忆体不足了,所以系统根据记忆体不足时的回收规则,将处于Stopped状态的 Activity 所占用的记忆体回收。
记忆体不足时的行为记忆体不足时,Dalvak 虚拟机会根据其记忆体回收规则来回收记忆体:1. 先回收与其他 Activity 或 Service/Intent Receiver 无关的行程即优先回收独立的 Activity。
2. 再回收处于Stopped状态的其他类型 Activity(在背景等待的 Activity) 。
最久没有使用的Activity 优先回收(比较官方的说法是根据 LRU 演算法...) 。
3 回收 Service 进程。
4. 快不行啦,关掉可见的 Activity/行程。
5. 关闭当前的 Activity。