我正在创建一些地理围栏。为了以后删除它们,我必须坚持使用创建它们的Intent
。
如图所示,我会将其存储在ViewModel
中并将其附加到无头Activity
上。当我发现以下内容时感到很激动:How to handle a silent SEND intent with a headless activity。但是,您必须在该活动上调用finish()
,我认为这也会导致Viewmodel也被丢弃。
答案 0 :(得分:1)
您无需保留Intent
本身即可删除地理围栏,而您尝试执行的操作将不起作用。
removeGeofences API需要一个PendingIntent
。比较两个PendingIntent以确定它们是否相等时,它们遵循Intent.filterEqual()的规则:
确定两个意图是否相同,以实现意图解析(过滤)。也就是说,如果它们的动作,数据,类型,类和类别相同。这不会比较意图中包含的任何额外数据。
只要您可以使用与以前相同的信息来构造Intent,就可以构造一个新的PendingIntent
并使其匹配。
或者,您可以使用采用字符串请求ID的removeGeofences()方法,您可以通过setRequestId()将其添加到Geofence中。然后,您只需跟踪字符串即可取消地理围栏。