Skip to content
阅读进度

请解释 Android 中四种启动模式(standard, singleTop, singleTask, singleInstance)的区别和适用场景? ​

返回 Android 核心 目录

标准回答 ​

standard 每次通常新建;singleTop 只在目标已位于目标任务栈顶时复用;singleTask 找到可复用实例时清掉其上方 Activity;singleInstance 的实例独占一个任务。复用实例时,新请求交给 onNewIntent。

**各自的适用场景:**普通可重复详情页常用 standard;避免顶部通知页重复打开可考虑 singleTop;明确需要回到已有入口并清上层时可考虑 singleTask;singleInstance 适合确有任务隔离需求的入口,普通业务页慎用。

**版本与任务条件:**Android 12 起还有 singleInstancePerTask:目标作为任务根,但同任务可以有其他 Activity,在相应启动条件下可在多个任务中创建。实际行为需同时看 flags、taskAffinity 和启动来源。

通俗例子 ​

A、B、C 已依次打开:standard 再开 B 通常新建;singleTop 只有 B 已在栈顶才复用;singleTask 复用已有 B 时会清掉它上面的 C。

深入解释 ​

**用栈顶判断复用:**standard 通常新建;singleTop 只在目标已是栈顶时复用。例如 A→B→C 再开 B,singleTop 通常仍创建新 B,因为当前栈顶是 C。

**还有哪些条件:**singleTask 复用目标时通常移除其上方 Activity。singleInstance 与较新的 singleInstancePerTask 还有任务归属规则;最终行为同时受 Intent flags、任务亲和性和系统版本影响。

易混淆点 ​

“只有四种”是旧口径。实际结果还要结合 Intent flags、taskAffinity 和启动来源。

参考资料 ​

内容来源 ​

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