【问题标题】:Cancelling a PendingIntent取消 PendingIntent
【发布时间】:2012-04-07 01:56:29
【问题描述】:

AppWidgetProvider 中使用 PendingIntent 时,我使用以下代码:

views.setOnClickPendingIntent( viewId,
                PendingIntent.getBroadcast( context, 0, intent,
                PendingIntent.FLAG_UPDATE_CURRENT ) );

因此,目前没有保留对 getBroadcast 方法返回的 PendingIntent 的引用。在特定情况下,我现在想取消 PendingIntent。有什么方法可以从视图中获取 PendingIntent 吗?或者是通过保持对它的引用来调用 PendingIntent 的取消方法的唯一方法?

【问题讨论】:

标签: android android-pendingintent


【解决方案1】:

如果您想取消它,您可以执行以下操作(代码库中的其他位置):

PendingIntent.getBroadcast(context, 0, intent, 
                           PendingIntent.FLAG_UPDATE_CURRENT).cancel();

其中intent 与上面代码中引用的相同。 PendingIntent.getBroadcast(...) 使用 PendingIntent.FLAG_UPDATE_CURRENT 将返回对已创建的现有引用的引用,或者如果当前不存在则创建一个。

【讨论】:

  • 如果我使用这个标志,getBroadcast 是否返回相同的对象 reference
  • 嗨,它关心你在意图中添加的额外内容吗?是否应该完全相同(意图目标、动作和附加内容)?
  • 来自developer.android.com/reference/android/app/PendingIntent 人们常犯的一个错误是创建多个 PendingIntent 对象,其 Intent 仅在其“额外”内容上有所不同,期望每次都获得不同的 PendingIntent。这不会发生。 Intent 中用于匹配的部分与 Intent#filterEquals(Intent) 定义的部分相同
猜你喜欢
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多