我正在创建一些地理围栏。为了以后删除它们,我必须坚持使用它们创建的Intent
。
想象我会把它存放在ViewModel
并将它附加到无头的Activity
。当我发现这个时感到很兴奋:How to handle a silent SEND intent with a headless activity。但是,您必须在活动上调用finish()
,我认为这会导致Viewmodel被丢弃。
您不需要保留Intent
本身来移除Geofences,而您尝试做的事情将无法工作。
removeGeofences API采取PendingIntent
。当比较两个PendingIntents以查看它们是否相等时,它们遵循Intent.filterEqual()的规则:
为了意图解析(过滤)的目的,确定两个意图是否相同。也就是说,如果他们的行为,数据,类型,类别和类别是相同的。这不会比较意图中包含的任何额外数据。
只要您可以使用与以前相同的信息构造Intent,您就可以构造一个新的PendingIntent
并且仍然匹配它。
或者,您可以使用带有字符串请求ID的removeGeofences()方法,您可以通过setRequestId()将其添加到Geofence。然后你只需要跟踪字符串就可以取消Geofences。