Skip to content
阅读进度

standard singleTop singleTask singleInstance 有什么区别? ​

返回 Framework 与系统服务 目录

标准回答 ​

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 等条件。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。