我的应用中有两项活动( A 和 B ),还有一些 BroadcastReceiver 。
我遇到以下情况:
A 正在运行并使用主页按钮关闭(已调用onStop)。
一段时间后, BroadcastReceiver 被触发了一些意图。它运行以下代码:
Intent activityIntent = new Intent(context,
B.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(activityIntent);
并且 B 确实已经开始,但是 A 也会被带到前面(在 B 之后)。我怎么能避免 A 面对面?
答案 0 :(得分:1)
当您按下主页按钮时,您实际上并未关闭应用程序(我的意思是它处于暂停状态)并且它处于后台堆栈中,并且每当您启动相同应用程序的新活动并关闭时活动它会弹出后面堆栈中的顶级活动..所以,如果你不需要这件事,那么请尝试以下代码
@Override
public void onStop() {
if(!isFinishing())
finish();
super.onStop();
}
答案 1 :(得分:1)
从BoardcastReceiver,您可以使用此意图过滤器启动活动B.这将清除活动堆栈并从堆栈中弹出活动A.
Intent intent = new Intent(context,B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);