AlarmManager和Handler + WakeLock之间最好的是什么?

时间:2011-10-05 18:12:04

标签: java android alarmmanager standby

我正在使用我的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个唤醒锁......这是真的吗?

3 个答案:

答案 0 :(得分:6)

我做了很多测试,结果就是这样:

-Alarm Manager比使用handler + wakelock节省更多电池以进行长时间操作。

但是您必须对警报启动的活动/服务使用额外的唤醒锁定,因为警报管理器唤醒锁定不会覆盖它。

即使这种方法使用两个WakeLock,电池似乎效率更高,寿命更长!在测试期间(2天), AlarmManager使用比其他方法少6倍的电池。在我自己的情况下......

希望这可以帮助一个人!

答案 1 :(得分:0)

我建议您使用AlarmManager以1小时的间隔处理事件。

因为我们不知道您到底要做什么,所以我们无法提供更深入的答案/建议。

答案 2 :(得分:0)

我不确定它是否仍然相关,

但答案是:首选使用AlarmManager。你只需要一个WakeLock就可以在AlarmManager唤醒它之后保持手机运行,以便向你的接收器发送一个意图,直到服务完成它的工作。因此,与“始终”相比,手机只会在几毫秒内醒来。