连续粗糙的LocationListener会吃电池吗?

时间:2012-08-20 05:36:30

标签: android wakelock

我想创建一个Android应用程序,根据用户位置更新警报(使用AlarmManager)。当用户移动100英里外,警报将被重新安排。这个应用程序就像一个调度程序应用程序。

为了解决这个问题,我创建了一个永远不会删除的位置监听器。我的问题是:

  1. 它会吃我的电池吗?我需要警报是与当前用户位置保持同步的。
  2. 我是否必须始终将应用程序设置为唤醒模式(唤醒锁定)?
  3. 如果我的解决方案不好,你的建议是什么?
  4. 非常感谢你!

1 个答案:

答案 0 :(得分:0)

  

它会吃掉我的电池吗?我需要警报是与当前用户位置保持同步的。

是的,并且无法保证您的应用会及时收到位置更新(例如,如果设备处于睡眠状态)。

  

我是否必须始终将应用程序设置为唤醒模式(唤醒锁定)?

持有WakeLock将有助于保持您的应用运行,但它会非常快速地耗尽电池 - 特别是如果您在数百英里内跟踪用户。

  

如果我的解决方案不好,您的建议是什么?

请考虑使用AlarmManager定期检查设备位置。每15-30分钟处理一次警报所使用的电池电量远远少于使用全职位置监听器。每次发生警报时,您都可以注册和取消注册位置监听器。只要应用程序在处理每个警报时获得WakeLock(并在之后立即释放锁定),该应用程序将定期更新位置并且不会耗尽电池电量。您可能希望将WakefulIntentService视为处理警报和WakeLocks的解决方案。