我在堆栈中有活动A-> B,并且为了启动活动C,我打电话给
Intent starter = new Intent(context, MainActivity.class);
starter.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(starter);
这一切都很好,活动A和B都有OnDestroy调用。如果我按下硬件'返回'现在按钮,活动适当完成并隐藏。但问题是,如果我通过单击硬件最近的应用程序按钮通过应用程序返回应用程序,它将返回到活动A.活动被销毁而不在堆栈中。在清单中,没有任何活动设置了android:launchMode,因此它们处于默认状态。
唯一可能的相关信息是有一个活动X是一个启动器活动,它是android:launchMode =" singleInstance"并且它启动了活动A,据说它被破坏了,它不应该在那个活动堆栈中。
答案 0 :(得分:0)
按下按钮时在活动C中可能会调用actvity C的onDestroy()。
请插入日志以查看是否被调用。这是您的活动A再次启动的唯一原因。
请参阅Android Back button calls ondestroy?
如果这些不适合你,请告诉我。
答案 1 :(得分:0)
以下代码可以覆盖硬件后退按钮:
@Override
public void onBackPressed() {
//put Intent to go back here
}
您可以使用上面编写的代码覆盖它