Android 使用 Service 定期获取位置并 post 到服务器

Android periodically get location and post to server using Service

我使用实现 LocationListener 的服务 class 定期获取位置,并且 post 仅在 latlon(最小 100 米)发生显着变化时才发送到服务器。因为,不断更新服务器会很快耗尽电池电量。我从 myActivity 的 onCreate() 启动此服务,并且不调用 stopService(),因为它必须永远 运行。

当用户重启设备时,如何在不打开应用的情况下再次启动服务?或

是否有任何本机或第三方库来处理这部分?

When the user reboots the device, How to start the service again without opening the app?

您可以实施在清单中注册的接收器,该接收器具有捕捉 [RECEIVE_BOOT_COMPLETED][1] 广播的意图过滤器。这还需要添加用户权限:android.permission.RECEIVE_BOOT_COMPLETED

see the example

Is there any native or third party library to handle this part?

有一个名为 Google Play Services 的完美的第三个库,它非常适合在各种可用配置下在后台接收位置更新。当请求正确的配置(如 accuracy/priority/interval)时,它也节省了大量电池。另一个很大的优势 - 您的应用根本不需要 运行 来接收位置更新。相反,google 播放服务将在每次更新时使用位置对象启动您的服务。

see the example and documentation for more info

请注意,无论哪种方式,您都必须如前所述注册到启动完成事件,以便在启动完成后重新注册到位置更新。