外观
standard singleTop singleTask singleInstance 有什么区别?
标准回答
standard 通常创建新实例。singleTop 只在目标实例恰好位于目标任务栈顶时复用,并通过 onNewIntent 接收请求;不在栈顶仍可能新建。singleTask 会按任务与实例匹配规则查找可复用实例,复用时通常清除其上方 Activity,并调用 onNewIntent;具体放置还受 taskAffinity 和 Intent flags 影响。singleInstance 的实例独占一个任务,其他 Activity 放到其他任务;较新版本还有 singleInstancePerTask,允许不同任务拥有各自实例。实际分析时,我会同时看 launchMode、taskAffinity、NEW_TASK、CLEAR_TOP 和 MULTIPLE_TASK,而不是只看一个配置。
延伸追问
CLEAR_TOP 命中 standard 实例时,目标实例也可能被销毁并重新创建;是否走 onNewIntent 要结合 SINGLE_TOP 等条件。
内容来源
- Android Framework 知识手册 · 原条目
1-4