具有Viewmodel的Android上的无头活动

问题描述 投票:1回答:1

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

想象我会把它存放在ViewModel并将它附加到无头的Activity。当我发现这个时感到很兴奋:How to handle a silent SEND intent with a headless activity。但是,您必须在活动上调用finish(),我认为这会导致Viewmodel被丢弃。

android viewmodel mvp
1个回答
1
投票

您不需要保留Intent本身来移除Geofences,而您尝试做的事情将无法工作。

removeGeofences API采取PendingIntent。当比较两个PendingIntents以查看它们是否相等时,它们遵循Intent.filterEqual()的规则:

为了意图解析(过滤)的目的,确定两个意图是否相同。也就是说,如果他们的行为,数据,类型,类别和类别是相同的。这不会比较意图中包含的任何额外数据。

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

或者,您可以使用带有字符串请求ID的removeGeofences()方法,您可以通过setRequestId()将其添加到Geofence。然后你只需要跟踪字符串就可以取消Geofences。

© www.soinside.com 2019 - 2024. All rights reserved.