【问题标题】:Battery drain while listening to network location updates收听网络位置更新时耗电
【发布时间】:2011-07-19 04:49:43
【问题描述】:

我有一个作为后台服务运行的应用程序,并不断监听网络更新(课程位置)。服务本身不持有任何唤醒锁。听音部分是这样的:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 120000, 3000F, this);

我的onLocationChanged() 方法正在做一些非常简单的事情(只是使用Location.distanceTo() 计算到预配置位置的距离:

在查看电池统计信息时,该应用程序是一个摇滚明星 - 有时甚至比显示器更重要。

CPU 并没有那么糟糕,但“保持清醒”部分非常高。

有没有办法防止这种情况发生?

我想使用AlarmManager 每 2 分钟请求一次更新,然后在我得到它后进入睡眠状态,但我不确定这是一个好方法。

另外,我想检测设备何时处于运动状态,但这很可能是一个更大的杀手。

【问题讨论】:

  • 我没有做过任何消耗电池的编程,所以你的场景看起来很有趣。我想知道应用程序是否在后台运行,那么为什么手机会“保持清醒”。每 2 分钟唤醒它,然后再次询问它,所以睡眠不太好,我也觉得:|
  • 你可以参考这个link在安卓开发者博客中关于在安卓应用中获取用户位置的良好实践

标签: android location power-management


【解决方案1】:

我想你回答了你自己的问题。

我想使用 AlarmManager 每 2 分钟请求一次更新 然后我得到它后去睡觉。不确定它是否很好 接近。

那将是最好的方法。但不要将其设置为两分钟,将其设置为 10 分钟间隔。

【讨论】:

  • 刚刚更改为使用 AlarmManager - 巨大的改进。我希望在以相同频率请求位置更新时,Android 操作系统会足够智能以节省电池...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
相关资源
最近更新 更多