我有以下 2 项 Activity (加上更多对这个问题不重要的 Activity ):
<activity android:name=".activities.HomeActivity" android:excludeFromRecents="true" />
<activity android:name=".activities.AdHocActivity" android:noHistory="true"/>
HomeActivity
是第一个也是唯一一个我保留历史的。用户可以从 Home 转到不同的地方,然后单击 Back 返回主 HomeActivity。
我也有服务在报警时运行并检查一些特定的事情。当满足特定条件时,我将显示我的 AdHocActivity
Intent i = new Intent(context, AdHocActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(BlockingActivity.INTENT_BLOCKED_PACKAGE_NAME, packageName);
context.startActivity(i);
FLAG_ACTIVITY_NEW_TASK
是显示来自 BroadcastReceiver 的 Activity 所必需的
现在,此 AdHoc Activity 向用户显示一些消息并且有一个按钮可以将用户带回 HomeActivity
private void sendToMainApplication()
{
Intent i = new Intent(this, HomeActivity.class);
startActivity(i);
finish();
}
所有这些工作,但我在堆栈中得到 HomeActivity
的 second 实例。所以现在当用户点击“返回”时 - 我的主页 Activity 会闪烁并返回(之前的副本)。
我只希望一份副本保留在顶部。我希望它像主播一样。如果它不存在 - 我想要打开一个新的。
最佳答案
防止 HomeActivity 被加倍的技巧是这样调用它:
private void sendToMainApplication()
{
Intent i = new Intent(this, HomeActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
关于java - Android Activity 堆栈控件。无法弄清楚如何删除历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924057/