【发布时间】:2014-11-27 07:19:39
【问题描述】:
我正在查看Android 中Alarm Manager 的页面,发现我们可以使用Pending Intent 在使用此功能一段时间后触发组件。
我可以看到这个功能的实用性,但我很想知道为什么要引入这个功能。应用程序不能自己计算时间并在一定时间后触发 Intent 吗?使用 Pending Intent 和 Alarm Manager 实现相同目标的独特优势是什么?
【问题讨论】:
我正在查看Android 中Alarm Manager 的页面,发现我们可以使用Pending Intent 在使用此功能一段时间后触发组件。
我可以看到这个功能的实用性,但我很想知道为什么要引入这个功能。应用程序不能自己计算时间并在一定时间后触发 Intent 吗?使用 Pending Intent 和 Alarm Manager 实现相同目标的独特优势是什么?
【问题讨论】:
活动在 Android 中是不稳定的。 Android 可以决定随时销毁应用程序或暂停它。如果一个长时间运行的 Activity 被暂停或销毁,它如何知道当前时间并触发 Intent?警报管理器在系统中设置警报并在那个时间,或者大致在指定时间,取决于系统中设置的警报数量触发警报,您可以使用它来触发一个Intent。
编辑:一个应用程序可以有一个服务。该服务是应用程序的一部分,并在应用程序线程上运行。您可以创建一个处理程序,以便它触发从当前时间到确定的秒数的一些代码,这一切都很好,因为该服务不会持续运行并将所有焦点放在主线程中。服务是运行其代码然后完成的东西。它不会留在那里等待某条线路。它在主线程上运行,因此如果服务中的代码始终在运行,它可能会导致应用程序出现 ANR。计算时间不是应该做的事情,就像服务中的 while 循环一样,因为它占用了所有的处理能力并冻结了应用程序。这就是为什么警报很有用的原因,Android 会在那一刻触发它,它不是您的应用程序中正在处理的东西。当然你可以在另一个线程中创建一个服务,但是除非真的需要像时钟一样计算时间,我不明白为什么会这样,Alarm 更适合这个。
【讨论】: