Android:从小部件打开错误的活动

我一直在努力解决这个问题。 我有一个小部件,显示烹饪食谱的摘要。 小部件是可点击的,因此每当用户点击它时,就会打开新活动,并附上该食谱的完整描述。 问题是,有时单击窗口小部件时会打开错误的活动。 让我举一个例子:

  1. 用户点击窗口小部件并打开活动A.
  2. 用户从活动A开始活动B(例如食谱索引)。
  3. 用户从活动B开始活动C.
  4. 用户按下主页按钮。
  5. 用户再次单击窗口小部件,显示活动C而不是A

我尝试设置这三个标志的组合,这有助于解决问题的一半:

openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

通过使用上面的标志,我设法显示正确的活动(A),直到我执行以下操作:

  1. 用户从窗口小部件打开活动A.
  2. 用户移动到活动B并通过单击新配方打开活动A.
  3. 向用户显示新配方
  4. 用户单击“主页”按钮并单击窗口小部件。
  5. 显示活动A(右侧)但配方不同。
  6. 从现在开始,如果我移动到不同的活动B或C并再次单击“主页”然后再单击“窗口小部件”,则不显示活动A,而是显示在按“主页”按钮之前可见的活动A.

我希望我能够详细解释它。 我真的很感谢你的帮助,因为这件事让我发疯!

更新:

这是我的待处理内容:

 Intent openIntent = new Intent(context, ProfanityDefinition.class); openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); openIntent.setData(Uri.parse(openIntent.toUri(Intent.URI_INTENT_SCHEME))); Bundle bundle = new Bundle(); bundle.putBoolean("widgetRequest", true); openIntent.putExtras(bundle); PendingIntent openPendingIntent = PendingIntent.getActivity(context, 0, openIntent, PendingIntent.FLAG_UPDATE_CURRENT); views.setOnClickPendingIntent(R.id.widget_content, openPendingIntent); 

谢谢

显示创建PedningIntent的代码。 如果您将额外内容传递给您的活动,请注意两个仅由附加项不同的意图被视为等效。 您可能希望在创建PendingIntent.FLAG_CANCEL_CURRENT时传递PendingIntent ,以确保不重用您的意图。