在 Android 中,你可以在代码中使用 Intent
对象的标志(flags)来动态设置启动模式。启动模式的标志可以通过 Intent
的 setFlags()
或 addFlags()
方法来设置。以下是如何在代码中动态设置启动模式的示例:
// 创建一个新的 Intent 对象
Intent intent = new Intent(this, 跳转的页面.class);
// 设置启动模式标志
// FLAG_ACTIVITY_NEW_TASK 表示将该 Activity 放入新的任务栈中
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 启动 Activity
startActivity(intent);
在上面的示例中,我们创建了一个新的 Intent
对象,并使用 setFlags()
方法将 FLAG_ACTIVITY_NEW_TASK
标志设置为启动模式。这意味着目标 Activity 将会在一个新的任务栈中启动。
你还可以使用 addFlags()
方法来添加多个标志,以根据需求自定义启动模式。例如:
Intent intent = new Intent(this, 跳转的页面.class);
// 添加多个标志
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
在这个示例中,我们添加了两个标志:FLAG_ACTIVITY_NEW_TASK
和 FLAG_ACTIVITY_CLEAR_TOP
。这将在新任务栈中启动目标 Activity 并清除返回栈中目标 Activity 上面的所有 Activity。
通过动态设置启动模式标志,你可以根据应用程序的需求在运行时更改启动模式,以实现不同的导航和任务栈管理行为。
标志名称 | 描述 |
---|---|
FLAG_ACTIVITY_NEW_TASK | 将 Activity 放入一个新的任务栈中。如果存在于其他任务栈中,将其移动到新任务栈。 |
FLAG_ACTIVITY_CLEAR_TOP | 如果目标 Activity 已存在于任务栈中,清除其上面的所有 Activity 并调至栈顶。 |
FLAG_ACTIVITY_SINGLE_TOP | 如果目标 Activity 已存在于任务栈且在栈顶,不会创建新实例,而是调用现有实例的 onNewIntent() 方法。 |
FLAG_ACTIVITY_CLEAR_TASK | 清除任务栈中的所有 Activity,并将目标 Activity 添加到新的任务栈中。 |
FLAG_ACTIVITY_REORDER_TO_FRONT | 将目标 Activity 移至任务栈顶部,不会创建新的实例。 |
FLAG_ACTIVITY_NO_HISTORY | 启动的 Activity 不会在返回栈中保留历史记录,按返回键不返回到该 Activity。 |
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | 启动的 Activity 不会出现在最近的应用程序列表中。 |
FLAG_ACTIVITY_BROUGHT_TO_FRONT | 如果目标 Activity 已存在于任务栈中,将其移动到栈顶,但不清除栈内其他 Activity。 |
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY | 表示 Activity 是通过历史记录启动的。 |