外观
四种常见启动模式有什么区别?
标准回答
standard 通常新建实例;singleTop 仅在目标实例已处于目标任务栈顶时复用;singleTask 在匹配的任务与实例条件下复用,并通常移除其上方 Activity;singleInstance 具有更强的任务隔离约束。复用时新 Intent 通常交给 onNewIntent。(任务与返回栈)
机制解释
启动模式解决的是实例和任务栈行为,实际结果还受 Intent flags、taskAffinity、启动来源等影响。FLAG_ACTIVITY_NEW_TASK 参与任务选择,不等于“开新线程”,也不保证降低启动时延。较新平台还有 singleInstancePerTask,可作为扩展了解。
延伸追问
onNewIntent 里直接读取 getIntent 可以吗?如果后续代码要从 getIntent 读取新参数,应调用 setIntent(intent) 或明确使用传入参数,避免继续拿旧 Intent。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q04