java - Android Activity 堆栈控件。无法弄清楚如何删除历史记录

标签 java android android-activity

我有以下 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();
    }

所有这些工作,但我在堆栈中得到 HomeActivitysecond 实例。所以现在当用户点击“返回”时 - 我的主页 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/

相关文章:

java - 无法恢复嵌套 fragment 状态

java - 使用嵌入式 Jetty 进行身份验证

java - Android 对话框中的动态表单

android - 在 Android 上使用 Retrofit/okhttp 堆栈上传远程 URI

java - Android如何绘制像这样的线性布局角形状

android - 无法启动 Activity ComponentInfo : NullPointerException

java - 将 Resteasy 与 javassist 一起使用?

java - 框架中应有红色矩形,但什么也看不到

java - 不幸的是,当我尝试在我的 Android 模拟器中运行它时,<your app> 已停止。怎么解决这个问题?

android - 在 Activity 的 onPause() 或 onStop() 状态下运行代码