我在应用程序(我们称之为应用程序"A"(中有代码,当用户单击按钮时,它会在第二个应用程序(我们称之为应用程序"B"(上启动活动。
到目前为止一切顺利,但我希望以后能够使用系统的概述屏幕(又名最近的应用程序列表(返回应用程序"A",但是当我尝试时,我会自动重定向回应用程序 B,就好像我第二次单击按钮一样。
手机运行的是Android KitKat,代码如下所示:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
startActivity(new Intent("com.some.package.MAIN"));
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
}
});
到目前为止一切顺利,但我希望以后能够使用系统的概述屏幕(又名最近的应用程序列表(返回应用程序"A",但是当我尝试时,我会自动重定向回应用程序 B,就好像我第二次单击按钮一样。
这是安卓的默认行为。Android Activity 生命周期使用名为 Task 的基于上下文的统计信息。因此,应用程序"B"只是在调用活动应用程序"A"的任务中。
您可以使用以下标志重写此行为。
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Intent i=new Intent("com.some.package.MAIN");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
}
});
1( FLAG_ACTIVITY_NEW_TASK - 如果设置,此活动将成为此历史记录堆栈上新任务的开始。任务(从启动它的活动到下一个任务活动(定义用户可以移动到的原子活动组。任务可以移动到前台和后台;特定任务中的所有活动始终保持相同的顺序。
2( FLAG_ACTIVITY_CLEAR_TOP - 如果设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是关闭其上的所有其他活动,并且此意图将作为新意图传递到(现在位于顶部(旧活动。
3( FLAG_ACTIVITY_SINGLE_TOP - 如果设置,如果活动已在历史记录堆栈的顶部运行,则不会启动该活动。