我的主要要求是让服务拥有自己的流程并触发自己的地理围栏事件。我希望用户在进入地理围栏时从通知中心收到通知,即使应用已被终止。
我阅读了有关服务的内容,这对我来说似乎很清楚,Android 文档非常丰富,所以我设法了解如何使用自己的进程启动服务,以及它如何能够使用 Messenger 与应用程序通信。
Google 提供了这段代码示例,展示了如何在 Google Play 服务中使用地理围栏: Google samples geofencing
到目前为止,我发现我们必须使用 IntentService 来触发地理围栏事件,从我读过的文档中可以看出,IntentService 在其工作完成后自行终止。我也进行了一些测试,看起来当应用程序被杀死时 Intentservice 也被杀死,这对文档来说并不让我感到惊讶。
所以我的问题是,我们如何执行具有自己进程的地理围栏服务?是否有可能避免在这件事上使用 IntentService?
编辑:
我想这样做的原因是用户可以设置地理围栏“提醒”,它基于日常使用情况。例如,假设您每天到达工作场所,当我们进入此地理围栏时,我们应该能够发出有关应用程序是否正在运行的警报(或通知)。我们不希望用户担心应用程序在后台运行。
最佳答案
我实际上是通过创建一个有自己的进程的服务来实现这一点的。此服务与 IPC 通信绑定(bind),我的 Activity 然后在需要时注册到它。
在此服务中,我确实应用了我在谷歌示例中找到的地理围栏示例。它使用 IntentService 来触发地理围栏事件。我没有在我的 Activity 中使用这个逻辑,而是在我自己的服务中使用它。现在,即使我的应用被终止,我也可以收到通知。
关于应用程序被杀死时的 Android 地理围栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355353/