使用AlarmManager和Handler的不同情况在Android中。

4

请问有人能为我解释一下使用AlarmManager和Handler的不同情况吗?并附带示例。这两种方法作为彼此替代方案的缺点有哪些吗?

谢谢。


如果您计划使用AlarmManager,请查看BuzzBox SDK:它是在其之上构建的,您可以使用cron表达式安排任务。让我知道您的想法:http://hub.buzzbox.com/android-sdk/ - robsf
1个回答

13
它们彼此关系不大。我假设你指的是在处理器上使用像postDelayed()这样的内容进行轮询,这只是Handler中的一个小功能。
你可以在活动中使用postDelayed()(也可用于任何小部件或其他View子类)来进行简单的时间事件,这些事件在活动本身内。
您可以使用AlarmManager 进行定期后台操作,就像在Linux / OS X上使用cron 或在Windows上使用计划任务一样。例如,如果您正在编写电子邮件客户端,则会使用AlarmManager 触发调用邮件服务器并检查新消息的代码。用户可以选择电子邮件检查频率,这将确定AlarmManager 触发您的代码的频率。

我已经寻找这个答案好几天了,谢谢。如果手机关闭(屏幕黑暗),Handler是否不会执行postDelayed,但AlarmManager会执行?我有轮询代码,当手机保持常开时可以工作,但当手机休眠时(或者当屏幕关闭但手机仍然开启时)无法工作;想知道我是否应该寻找另一个错误,或者是否更换为AlarmManager可能解决问题。 - kyle
4
当手机处于休眠状态时,所有运行的东西都会停止,包括任何 postDelayed() 的内容。如果正确使用 AlarmManager,它可以唤醒手机。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接