【Android】Activity LaunchMode 活动启动模式

avatar

azurekiln

android:launchMode 是 Android 中用来指定 Activity 启动行为的属性,它决定了在启动一个新的 Activity 时,是否会新建一个实例、是否会复用已有实例、以及它在任务栈(Task Stack)中的位置。


✅ 1. standard(默认)

  • 每次启动都创建一个新的实例
  • 即使已经存在相同的 Activity,也会新建一个
  • 每个实例都可以在栈中多次存在

🔁 适合场景: 大多数普通页面,允许多次打开。


✅ 2. singleTop

  • 如果目标 Activity 已在栈顶,就不会创建新实例;否则创建新实例
  • 若复用已有实例,会调用 onNewIntent() 代替 onCreate()

🔁 适合场景: 顶部重复启动的页面(如新闻详情页),避免堆叠。


✅ 3. singleTask

  • 栈中已有该 Activity,就不会创建新实例,而是清除该实例上面的所有 Activity
  • 然后调用已存在实例的 onNewIntent() 方法
  • 该 Activity 会成为栈顶(但仍在原任务栈中)

🔁 适合场景: 启动页面、主页、登录页等只需存在一个实例的页面。


✅ 4. singleInstance

  • 该 Activity 始终在一个新的任务栈中独立存在
  • 所有其他 Activity 启动时不会进入它的任务栈
  • 所在栈中只有它一个 Activity

🔁 适合场景: 弹出窗口、来电界面、通知启动的独立任务等。


launchMode standard singleTop singleTask singleInstance
描述 每次启动都创建一个新的实例 如果目标 Activity 已在栈顶,就不会创建新实例;否则创建新实例 栈中已有该 Activity,就不会创建新实例,而是清除该实例上面的所有 Activity 该 Activity 始终在一个新的任务栈中独立存在
是否复用实例 是(栈顶)
是否清除栈顶
是否新建任务栈

扫描二维码,在手机上阅读
收藏
请先 登录 再评论
powered by emlog pro
服务器供应商 景云数据

友情链接
白衣Ink


sitemap