一 前言
任务、回退栈概念
一个Task是多个能够和用户进行交互并且能完成某种功能的activities的集合,可以通过getTaskId()方法来获取当前Activity对象所在Task的Id。 这些Activity被被放在一个堆栈(backstack)里,后启动的Activity对象的ActivityRecord会放在Task的栈顶。
Activity启动时ActivityManagerService会为其生成对应的ActivityRecord记录,并将其加入到回退栈(backstack)中,另外也会将ActivityRecord记录加入到某个Task中。ActivityRecord,backstack,Task都是ActivityManagerService的对象,由system_server进程负责维护,而不是由应用进程维护。
当用户点击进入桌面按钮回到桌面或者启动一个新的任务,之前的那个任务将会进入后台,它的所有Activity都停止了,但是这个任务的返回队列仍然是完整的,只是失去了焦点。一个任务可以重新回到前台获取焦点。这也就是Android的多任务。
Task是可以跨应用的,有的Activity,虽然不在同一个app中,但为了保持用户操作的连贯性,把他们放在同一个Task中。
可以回看前面相关的知识:Android组件管理框架—视图容器Activity之启动流程(Android P)