应用程序空闲时如何在android中停止GPS更新?
Posted
技术标签:
【中文标题】应用程序空闲时如何在android中停止GPS更新?【英文标题】:How to stop GPS Updates in android when application is idle? 【发布时间】:2011-08-19 13:48:57 【问题描述】:朋友们,
我创建了一个应用程序,我在其中获取 GPS 位置 onCreate 方法和
onPause 方法我删除位置更新。
在进行 gps 更新后,我让我的手机闲置了一整夜,它处于闲置模式,我的应用程序正在其中运行,早上我猜由于 GPS 原因,bettery 宕机了。
任何人指导我如何处理这种情况,如果应用程序空闲而不是 onPause(),我应该使用哪种方法停止使用 GPS?
任何帮助将不胜感激。
【问题讨论】:
您是否通过设置 - 电池使用确认您的应用程序实际上在使用 GPS 这么多小时? android 是否会记录此类信息哪个应用程序消耗了更多电池?如果是,那么如何检查它请指导更多.. 它位于设置/关于手机/电池使用/应用名称。它按 CPU 使用率、发送的数据、GPS 使用率等进行细分。 jleedev 是对的。你应该检查是哪个应用程序在烧电池,是 GPS 还是 CPU 造成的。 【参考方案1】:停止onPause()
中的位置更新通知是可以的,但请注意两点。
-
如果 GPS 仍然打开,它仍然会消耗您的电池。
根据activity life cycle,如果您开始在
onCreate()
中收听位置更新并在onPause()
中停止它,那么当您将应用程序返回到前台时,它不会再次注册更新,请考虑将注册移动到@ 987654325@.
【讨论】:
如果手机处于空闲状态,您认为它会调用该活动的 onPause 方法吗?根据您的观点 1,如果 onPause 仍然存在,电话 GP 可以保持开启状态吗?【参考方案2】:如果用户移动到找不到信号的室内,我问过一个类似的问题,即 GPS 超时。我在 LocationListener 类中启动了一个计时器,如果在 5-8 秒内未找到信号,则删除更新。这里有一些代码可以帮助How to time out GPS signal acquisition
【讨论】:
【参考方案3】:如果您停止接收广播(从而在 Activity 的 onPause() 方法中取消注册 BroadcastReceiver),您的应用程序没有理由继续从 LocationManager 接收更新。
【讨论】:
以上是关于应用程序空闲时如何在android中停止GPS更新?的主要内容,如果未能解决你的问题,请参考以下文章
Android 在设备处于睡眠状态时获取 GPS 坐标更新(屏幕已关闭)