android - 如何将 GPS 系统服务放在本地服务中,以便关闭 GPS 时可以将其杀死

标签 android gps

和许多其他人一样,我想要一个退出按钮,当用户离开应用程序时它会关闭 GPS 以节省电池生命周期。许多讨论基本上都在说这是不可能的,但我有一个应用程序可以做到这一点,所以继续尝试寻找方法。该应用程序的开发人员告诉我,他在他编写的服务中运行内部 GPS,并且他的退出键终止了该服务和 vola,GPS 指示器立即熄灭。

我的应用程序对时间非常敏感,我想使用我现在在使用系统服务的 LocationListener 部分时使用的 onLocationChanged 的​​等效项,但将系统服务放在我编写的服务中,以便我可以终止它。

那么我的问题是,我能否将系统 GPS 服务放入本地服务中而不增加任何明显的延迟,而无需轮询本地服务以获取更新。任何有关我如何做到这一点的帮助将不胜感激,因为这是我的第一个 Android 应用程序,尽管我已经编写了大量的 C 和 PHP 代码,但这是一个新领域并且有点奇怪。

最佳答案

Like many others, I want to have an exit button that will turn off the GPS

您不能“关闭 GPS”。您可以告诉 Android 您的应用不再需要 GPS(例如,您不再需要 GPS 更新)。然后,Android 将决定是否关闭 GPS radio ,具体取决于此时可能还有其他设备正在尝试使用 GPS。

when the user leaves the app to conserve battery life.

您不需要按钮。只有一项 Activity 需要 GPS 访问的简单应用程序可以简单地在 onResume() 中请求位置更新并在 onPause() 中删除它们。更复杂的应用程序可能会在第一个需要它们的 onResume() 上请求位置更新,然后在 onUserLeaveHint() 中删除这些更新,或者对恢复/暂停进行引用计数确定何时删除更新的操作。

在某些情况下,您确实希望用户必须通过单击按钮明确地说出“停止使用 GPS”,但如果可以避免,请这样做。

The developer of that application told me that he runs the internal GPS in a service that he wrote and that his exit key kills that service and vola, the GPS indicator goes off instantly.

开发人员需要以某种方式确定何时启动和停止此服务。他们可以请求和删除位置更新,而不是启动和停止服务,并具有相同的效果,同时消耗更少的堆空间并降低用户使用任务 killer 和强制停止按钮攻击您的可能性。

恕我直言,使用具有位置更新的服务的唯一原因是因为您特别希望在后台使用位置信息而周围没有任何 Activity 。

关于android - 如何将 GPS 系统服务放在本地服务中,以便关闭 GPS 时可以将其杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11456296/

相关文章:

android - 像 Google+ 一样的抽屉式导航

Android - 向上滑动面板(库)圆角

blackberry - 如何在 Blackberry MapField 中显示多个位置?

python:有GPS坐标和对应值,生成二维热图

android - 室内IP地址定位

java - 致命异常 : main java. lang.NoClassDefFoundError : rx. plugins.RxJavaHooks

android - Phonegap 插件 :How to convert Base64 String to a PNG image in Android

Android 应用程序屏幕兼容性问题

iOS:应用程序在安装应用程序时不征求用户的许可。每次都获取 kCLAuthorizationStatusNotDetermined - Objective-c & Swift

android - 为什么即使我在 android 中删除了融合位置 api 的位置更新,GPS 仍在使用中