下面的问题有很多类似的主题,但实际上没有解决我的问题 . 请阅读以下内容

无论用户在哪个屏幕上,我都会弹出一个对话框 . 如果用户点击该对话框中的按钮,我需要启动一个特定的应用程序并将数据传递给它 . 现在,我使用Intent执行此操作并将数据放入“extras”区域 . 这一切都很好,很好 . 应用程序启动,我必须在Activity启动过程中进行检查,因为它可能是第一次启动 . 我可以获取意图并提取随启动意图一起发送的额外数据 . 这很好......什么是不好的,我无法工作就是在我使用它之后完全删除这个意图 . 设置一个标记表示请求是否已被处理,或者甚至将intent的本地副本设置为null以使其不再被拉动,这很简单 . 但是,如果活动被破坏并且我使用不同的机制启动该活动(即没有意图,只需点击应用程序启动器中的应用程序),从我从对话框(启动时)使用它时,意图仍然存在意图)和额外的数据仍在那里 .

所以,我在onResume中尝试了以下内容:

@Override
public void onResume() {
   Intent intent = getIntent();
  boolean editAutoAssignments = false;
  if (intent != null) {
     editAutoAssignments = intent.getBooleanExtra("AUTO_ASSIGN_SET", editAutoAssignments);
     intent.removeExtra("AUTO_ASSIGN_SET");
  }
}

如果您通过意图启动此活动,销毁活动,然后从应用程序启动器启动它,则删除额外数据不起作用 . 数据仍然存在,将intent设置为null也不起作用 . 如果Activity仍然存在于显示器上,它很简单,但是再次启动它会保持意图 .

唯一的其他解决方案是拥有一个共享首选项文件,如果由对话框触发,则写入它,从启动的应用程序中读取它然后在我处理它之后重置标志 . 每次打开应用程序时我都必须阅读它,如果活动第一次没有启动或者已经打开(如果对话框已经超过它),我仍然需要在调用onNewIntent时进行检查 . 这感觉很脏 . 这里有更好的方法或解决我的意图问题吗?