我正在使用我的Android服务处理程序,每隔60分钟(1小时)重新执行一些操作,使用PartialWakeLock保持手机不睡觉。但这会导致大量电池使用。
所以决定研究AlarmManager(我是菜鸟),someone wrote here对于这类事情是完美的..
但现在在网上阅读我发现谁使用AlarmManager,仍然需要一个WakeLock。这是真的吗?
每次60分钟(1小时)运行一个循环的最佳方法是什么,而不会杀死电池?
感谢名单
P.S。
AlarmManager Android Developer
只要发出警报,警报管理器就会保持CPU唤醒锁 接收者的onReceive()方法正在执行。这保证了 在完成广播处理后,手机才会睡眠。 一旦onReceive()返回,Alarm Manager就会释放此唤醒锁定。 这意味着手机在某些情况下会尽快睡觉 onReceive()方法完成。如果你的报警接收器叫 Context.startService(),手机可能会睡眠 在请求的服务启动之前。为了防止这种情况,你的 BroadcastReceiver和服务需要实现单独的唤醒 锁定策略以确保手机继续运行直到 服务可用。
但似乎我需要2个唤醒锁而不是使用处理程序的1个唤醒锁......这是真的吗?
答案 0 :(得分:6)
我做了很多测试,结果就是这样:
-Alarm Manager比使用handler + wakelock节省更多电池以进行长时间操作。
但是您必须对警报启动的活动/服务使用额外的唤醒锁定,因为警报管理器唤醒锁定不会覆盖它。
即使这种方法使用两个WakeLock,电池似乎效率更高,寿命更长!在测试期间(2天), AlarmManager使用比其他方法少6倍的电池。在我自己的情况下......
希望这可以帮助一个人!
答案 1 :(得分:0)
我建议您使用AlarmManager以1小时的间隔处理事件。
因为我们不知道您到底要做什么,所以我们无法提供更深入的答案/建议。
答案 2 :(得分:0)
我不确定它是否仍然相关,
但答案是:首选使用AlarmManager。你只需要一个WakeLock就可以在AlarmManager唤醒它之后保持手机运行,以便向你的接收器发送一个意图,直到服务完成它的工作。因此,与“始终”相比,手机只会在几毫秒内醒来。