我在应用程序中有代码(让我们称之为应用程序' A'),它会在第二个应用程序上启动活动(让我们称之为应用程序' B' ;)当用户点击按钮时。
到目前为止一直很好,但我希望以后能够回到应用程序A'使用系统的概述屏幕(也就是最近的应用程序列表),但是当我尝试将我自动重定向回App 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();
}
}
});
答案 0 :(得分:0)
到目前为止一直很好,但我希望以后可以使用系统的概述屏幕(也就是最近的应用程序列表)回到应用程序'A',但是当我尝试自动重定向回App B时,就像我第二次点击按钮一样。
这是Android的默认行为。 Android Activity生命周期使用名为Task.的基于上下文的statck 所以App'B'就在调用Activity App'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 - 如果已设置,并且正在启动的活动已在当前任务中运行,则不是启动该活动的新实例,而是启动该活动的所有其他活动将被关闭,此Intent将作为新的Intent传递到(现在在顶部)旧活动。
3)FLAG_ACTIVITY_SINGLE_TOP - 如果已设置,则如果活动已在历史堆栈顶部运行,则不会启动该活动。