1

像许多其他人一样,我想要一个退出按钮,当用户离开应用程序时它会关闭 GPS 以节省电池寿命。基本上发布了许多讨论,说这无法完成,但我有一个应用程序可以这样做,因此继续尝试寻找方法。该应用程序的开发人员告诉我,他在他编写的服务中运行内部 GPS,并且他的退出键杀死了该服务和 vola,GPS 指示灯立即熄灭。

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

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

4

1 回答 1

1

像许多其他人一样,我想要一个可以关闭 GPS 的退出按钮

您不能“关闭 GPS”。您可以告诉 Android您的应用不再需要 GPS(例如,您不再需要 GPS 更新)。然后, Android将确定是否关闭 GPS 无线电,这取决于目前可能尝试使用 GPS 的其他设备。

当用户离开应用程序以节省电池寿命时。

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

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

该应用程序的开发人员告诉我,他在他编写的服务中运行内部 GPS,并且他的退出键杀死了该服务和 vola,GPS 指示灯立即熄灭。

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

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

于 2012-07-12T17:03:47.697 回答