取消 PendingIntent
Posted
技术标签:
【中文标题】取消 PendingIntent【英文标题】:Cancelling a 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 的取消方法的唯一方法?
【问题讨论】:
见***.com/a/4350149/165674 谢谢,Dheeraj!我现在有点着急,但我会尽快检查并尝试。干杯! 【参考方案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) 定义的部分相同以上是关于取消 PendingIntent的主要内容,如果未能解决你的问题,请参考以下文章