Android AMS(Activity Manager Service)是Android系统中负责管理应用程序生命周期和任务栈的重要服务。通过 AMS,系统可以管理应用程序的启动、切换、销毁和任务栈等操作。其中,Activity 栈管理是AMS的核心功能之一。
Android 的 Activity 栈是用来管理应用程序中各个 Activity 实例的,它采用栈的数据结构,遵循后进先出(LIFO)的原则。当一个 Activity 启动时,它会被放入栈顶;当一个 Activity 被销毁时,它会从栈中移除。通过 Activity 栈,系统可以维护应用程序的页面堆栈,实现返回、切换和任务管理等功能。
Activity 栈的实现原理主要涉及两个方面:任务(Task)和任务栈(Task Stack)。
任务(Task):是指一组相关联的 Activity 组成的逻辑单元,它们属于同一个应用程序,共享相同的任务 ID。一个任务中的 Activity 可以根据启动模式(如standard、singleTop、singleTask、singleInstance)决定是否创建新的实例。
任务栈(Task Stack):是由多个任务(Task)组成的堆栈,每个任务都有自己的栈顶 Activity。在多任务的情况下,系统会维护多个任务栈,每个任务栈对应一个任务。默认情况下,每个应用程序的主 Activity 会放在一个独立的任务栈中。