📅  最后修改于: 2023-12-03 15:06:30.156000             🧑  作者: Mango
当我们需要从一个应用程序中启动另一个应用程序的 Activity 的时候,需要使用 startActivity() 方法。但是如果我们是在 Activity 上下文之外调用该方法,需要使用 FLAG_ACTIVITY_NEW_TASK 标志。
FLAG_ACTIVITY_NEW_TASK 是一个 Intent 标志,用于指示当该 Intent 启动一个新 Activity 的时候,将它置于任务栈的顶部。这个标志通常用于从一个应用程序中启动另一个应用程序的 Activity,因为在这种情况下所启动的 Activity 不在启动它的 Activity 所在的任务栈内。
如果在 Activity 上下文之外调用 startActivity() 方法,系统会抛出一个异常,因为 Activity 上下文是需要在 Activity 生命周期中才有效的。
使用 FLAG_ACTIVITY_NEW_TASK 标志可以创建一个新的任务栈,并将所启动的 Activity 放置在该任务栈的顶部。这样,我们就不需要指定任何 Activity 上下文了。
使用 FLAG_ACTIVITY_NEW_TASK 标志的方法如下:
Intent intent = new Intent(this, TargetActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
其中 this 表示 Activity 上下文,TargetActivity.class 表示需要启动的目标 Activity。
在这个示例中,我们先创建了一个 Intent 对象,然后调用 setFlags() 方法来设置 FLAG_ACTIVITY_NEW_TASK 标志,最后调用 startActivity() 方法启动目标 Activity。