具有Viewmodel的Android上的Headless活动

时间:2018-09-06 22:58:24

标签: android viewmodel mvp

我正在创建一些地理围栏。为了以后删除它们,我必须坚持使用创建它们的Intent

如图所示,我会将其存储在ViewModel中并将其附加到无头Activity上。当我发现以下内容时感到很激动:How to handle a silent SEND intent with a headless activity。但是,您必须在该活动上调用finish(),我认为这也会导致Viewmodel也被丢弃。

1 个答案:

答案 0 :(得分:1)

您无需保留Intent本身即可删除地理围栏,而您尝试执行的操作将不起作用。

removeGeofences API需要一个PendingIntent。比较两个PendingIntent以确定它们是否相等时,它们遵循Intent.filterEqual()的规则:

  

确定两个意图是否相同,以实现意图解析(过滤)。也就是说,如果它们的动作,数据,类型,类和类别相同。这不会比较意图中包含的任何额外数据。

只要您可以使用与以前相同的信息来构造Intent,就可以构造一个新的PendingIntent并使其匹配。

或者,您可以使用采用字符串请求ID的removeGeofences()方法,您可以通过setRequestId()将其添加到Geofence中。然后,您只需跟踪字符串即可取消地理围栏。