Android ActivityManager一些心得

最近在处理ActivityManager问题中得到的一些心得分享给大家,如有错误请指教。

活动管理(activitymanager)

       activitymanagerservice是以栈的管理活动的。每一个活动属于一个任务,一个任务可以看做一系列活动集合;task内部以堆栈的概念管理着;每次切换一个新的任务的时候;都会将所属活动切换到前台,并将活动置于栈顶;之后才会进行恢复的过程。

       所有的任务共同存储在ArrayList中,每当发生任务切换的时候,都要执行ArrayList的删除(delete)和移动(move)工作任务和活动任务图,


栈的工作任务图

在上图中我们可以看到A,B,C,DE,F代表着6个活动;颜色相同的活动属于一个task.F位移栈顶;表示用于当前的交互的活动;F所属任务也称为前台任务;所以从图上可以看出;任务只有概念之分;并没有额外的数据结构单独来实现;task是以ArrayList方式实现的,index索引为0时;Activity A位移栈底;index为5时;活动F位移栈顶。

当F中startActivity,A会发生什么场景?这些设置到活动launchmode和intent中的启动关于这部分的可以参考任务和返回堆栈

下面用一张图来表示Task  and back stack来做一点补充:


task  and  back  stack用例

上图中启动目标的意图标志都是采用默认值。

推荐阅读更多精彩内容