转载请注明出处:www.leoyanblog.com
本文出自 LeoYan 的博客
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 LeoYan 即可关注。
Activity的任务和启动模式
任务与返回栈
后进先出原则
Task 就好像是能包含很多 Activity 的栈。默认情况下,一个 Activity 启动另外一个 Activity 时,两个 Activity 是放在同一个 Task 栈中的,第二个 Activity 压入第一个 Activity 所在的 Task 栈。当用户按“返回”按钮时,第二 Activity 从栈中弹出,第一个 Activity 恢复执行。直到用户返回主屏幕为止(或者,返回 Task 中正在运行的任意 Activity)。当所有 Activity 均从堆栈中移除后,Task 即不复存在。
多任务
Task 是一个有机整体,当用户开始新 Task 或通过“主页”按钮转到主屏幕时,可以移动到“后台”。 尽管在后台时,该任务中的所有 Activity 全部停止,但是 Task 的返回栈仍旧不变,也就是说,当另一个 Task 发生时,该 Task 仅仅失去焦点而已,如上图中所示。然后, Task 可以返回到“前台”,用户就能够回到离开时的状态。
注:后台可以同时运行多个 Task 。但是,如果用户同时运行多个后台 Task ,则系统可能会开始销毁后台 Activity,以回收内存资源,从而导致 Activity 状态丢失。
可多次实例化
应用中的一个 Activity 可能会多次实例化,如上图所示。因此,如果用户使用“返回”按钮向后导航,则会按 Activity 每个实例的打开顺序显示这些实例(每个实例的 UI 状态各不相同)。
任务的默认行为总结
- 当 Activity A 启动 Activity B 时,Activity