Android中Activity启动的模式

在 Android 开发中,Activity 的启动模式(Launch Mode)定义了当启动一个 Activity 时,系统会如何处理它的实例。不同的启动模式可以影响 Activity 在任务栈中的管理方式,对用户的使用体验产生直接影响。下面详细介绍四种主要的启动模式:

1. standard 模式

  • 描述:这是默认的启动模式,每次启动 Activity 时都会创建一个新的实例,不管任务栈中是否已经存在该 Activity 的实例。
  • 适用场景:适用于不需要重用的界面,每次启动时都希望展示新的内容。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="standard" />

示例

kotlin 复制代码
// 每次调用都会启动一个新的实例
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为:每次调用 startActivity(),都会将新的 Activity 放在栈顶。多个实例可以同时存在。

2. singleTop 模式

  • 描述:如果新启动的 Activity 已经位于任务栈的栈顶,则不会创建新的实例,而是复用现有实例。如果不在栈顶,则会创建新实例。
  • 适用场景:适合在某些情况下避免重复启动同一个 Activity,比如点击通知多次打开同一界面。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="singleTop" />

示例

kotlin 复制代码
// 如果MyActivity已经在栈顶,那么不会创建新的实例,而是复用已有的实例
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为:当该 Activity 已经在栈顶时,不会创建新实例,而是调用现有实例的 onNewIntent() 方法。

3. singleTask 模式

  • 描述:如果在任何任务栈中已经存在该 Activity 的实例,则不会创建新的实例,而是将其带到前台,并清除其上方的所有其他 Activity。
  • 适用场景:适合需要独占任务栈的 Activity,如主页或单一功能页面。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="singleTask" />

示例

kotlin 复制代码
// 启动MyActivity时,如果已存在该实例,会清除其上方所有Activity
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为:若栈中已有该 Activity 实例,则直接将该实例带到前台并清除其上方的所有 Activity。如果不存在,则创建新的实例。

4. singleInstance 模式

  • 描述:此模式会为该 Activity 创建一个专属的任务栈。在任何任务中只能有一个实例存在,每次启动时都会复用该实例。
  • 适用场景:用于需要独占一个任务栈的 Activity,通常用于特殊功能,如浮动的 Activity 或全屏显示的 Activity。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="singleInstance" />

示例

kotlin 复制代码
// 启动MyActivity时,它会运行在独立的任务栈中,且不会创建新实例
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为 :该 Activity 始终处于独立的任务栈中,任何启动请求都会直接复用该实例,不会创建新的实例。其他应用也可以启动这个 Activity,但只能通过其单一实例。

小结

启动模式 新实例条件 复用条件
standard 每次启动都会创建新的实例 无法复用
singleTop 栈顶没有实例时创建新的实例 栈顶已有实例时复用,调用 onNewIntent()
singleTask 任务栈中不存在实例时创建新的实例 任务栈中存在时,复用并清空其上方 Activity
singleInstance 独立栈中不存在实例时创建 任务栈中存在时直接复用

以上是 Android 中四种 Activity 启动模式的详细说明,根据需要选择合适的模式来优化用户的导航体验和应用的任务管理。

相关推荐
阿巴斯甜几秒前
Flow
android
用户86022504674722 小时前
Claw 分析 Perfetto Trace
android
游戏开发爱好者82 小时前
使用Fiddler设置HTTPS抓包诊断Power Query网络问题
android·ios·小程序·https·uni-app·iphone·webview
阿巴斯甜3 小时前
Lifecycle
android
fengci.3 小时前
CTF+随机困难部分
android·开发语言·网络·安全·php
阿巴斯甜3 小时前
LiveData
android
OCN_Yang4 小时前
Android 开发:XML、Flutter、Compose 怎么选?
android
꯭爿꯭巎꯭4 小时前
壁纸引擎安卓版(wallpaper engine安卓版免费下载)
android
阿巴斯甜4 小时前
viewModel
android
问心无愧05134 小时前
ctf show web 入门39
android·前端·笔记