应用程序被杀死时的 Android 地理围栏

标签 android service android-service geofencing android-geofence

我的主要要求是让服务拥有自己的流程并触发自己的地理围栏事件。我希望用户在进入地理围栏时从通知中心收到通知,即使应用已被终止。

我阅读了有关服务的内容,这对我来说似乎很清楚,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/

相关文章:

android - 在前台启动两个服务?

java - 如何在 Android 的 firebase 中存储和检索对象?

android - 如何在 Android 2.2 中禁用 ListView 过度滚动?

android - 从 Intent 检索 Extras 时出现 NullPointerException

java - 如何在 Android 中拥有多个服务实例

android - 在后台运行的服务中需要帮助

android - 是否应该在服务中调用内容解析器(即单独的线程)?

android - MAILTO 电子邮件中的链接以开始一封新电子邮件

language-agnostic - 他们如何制作在启动时运行的程序

android - 在 android 中获取 4.1 及更高版本的通知