我目前正在我的应用程序上注册一个位置围栏,类似于如何在文档上解释它。使用日志,我可以看到注册回调和广播接收器被正确调用。但是,如果我重新运行应用程序,则不会触发这些应用程序。重新启动我的手机后,它又开始工作了。
我不会注销围栏,因为我希望即使在后台也要发射围栏(接收者与活动无关)。
即使我在应用程序开发期间多次运行应用程序,我也如何使它工作呢?如何确保在用户恢复或更新应用程序时正确注册栅栏?
我创建AwarenessFence使用
AwarenessFence allLocations = AwarenessFence.or(locationFences);其中locationFences是像这样创建的LocationFence对象的集合
singleLocationFence = LocationFence.entering(latitude, longitude, FENCE_RADIUS); 发布于 2016-08-23 14:33:09
我已经在服务中完成了栅栏处理,而且由于服务可以在后台运行,所以它运行得很好。如果调用"onDestroy“,我过去会注销这些栅栏,这样操作系统就不再需要观察这些栅栏了。该服务还解决了您的“重新运行”-problem,因为它只能一次服务。
你的下一个观点
AwarenessFence allLocations = AwarenessFence.or(locationFences);它起作用了,我用TimeFence试了一下
AwarenessFence allLocations = AwarenessFence.or(TimeFence.inInterval(new Date()), Long.MAX_VALUE));但更好的利用
AwarenessFence allLocations = locationFences;因为AwarenessFence是所有BeaconFences,Geofence,TimeFencee,(.)的父级形成感知API。
发布于 2017-01-28 00:49:36
我了解到,在您注册使用感知API后,即使您重新运行应用程序,或者如果应用程序处于后台,您也希望收到回调。这个问题并没有澄清这一点,但我相信,如果您正在跟踪文档,您将注册广播接收器动态。
您可以通过添加清单文件中类似于这样的内容对广播接收器进行静态注册,从而达到您的目的。
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
</receiver>这样,您就不需要在onDestroy()中注销接收方,即使应用程序被停止或更新,如果您注册了围栏,应用程序也会得到围栏回调。
https://stackoverflow.com/questions/38544966
复制相似问题