我使用实现LocationListener的服务类来定期获取位置,并且仅在latlon发生相当大的变化(最小100米)时才发布到服务器。因为,不断更新服务器会快速耗尽电池电量。我从myActivity的onCreate()启动此服务,并且不要调用stopService(),因为它必须永远运行。
当用户重新启动设备时,如何在不打开应用程序的情况下再次启动服务?或
是否有任何本地或第三方库来处理此部分?
答案 0 :(得分:0)
当用户重新启动设备时,如何在不打开应用程序的情况下再次启动服务?
您可以实现在清单中注册的接收器,该接收器具有捕获[RECEIVE_BOOT_COMPLETED][1]
广播的意图过滤器。这还需要添加用户权限:android.permission.RECEIVE_BOOT_COMPLETED
是否有任何本地或第三方库来处理此部分?
有一个称为Google Play Services的完美第三个库,非常适合在所有可用配置下在后台接收位置更新。当请求正确的配置(这样的准确性/优先级/间隔)时,它也节省了很多电池。另一个很大的优势 - 您的应用不必为了接收位置更新而必须运行。相反,每次有更新时,Google Play服务都会使用位置对象启动您的服务。
see the example and documentation for more info
请注意,您必须注册以启动前面提到的完成事件,并在启动完成后重新注册到位置更新。