【发布时间】: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