我正在查看Android中Alarm Manager的页面,看到我们可以使用Pending Intent在一段时间后使用此功能触发组件。
我可以看到此功能的实用程序,但我很想知道为什么要引入此功能。应用程序可以自己计算时间并在一定时间后触发Intent吗?使用Pending Intent和Alarm Manager实现相同目标的独特优势是什么?
答案 0 :(得分:1)
Android中的活动不稳定。 Android可以决定随时销毁应用程序或暂停它。如果长时间运行的活动被暂停或销毁,它如何知道当前时间并触发Intent?警报管理器在系统和当时或大致在指定时间设置警报,具体取决于触发警报的系统中设置的警报数量,您可以使用它来触发意图。
编辑:应用程序可以拥有服务。该服务是应用程序的一部分,并在应用程序线程上运行。您可以创建一个处理程序,以便从当前时间触发一些代码到确定的秒数,这一切都很好,因为服务不会连续运行并将所有焦点都放在主线程中。服务是运行其代码然后完成的东西。它不会留在那里等待某些线路。它在主线程上运行,因此如果服务中的代码始终运行,它可能会导致应用程序出现ANR。计算时间不是应该完成的事情,比如服务中的while循环,因为它需要所有处理能力并冻结应用程序。这就是警报有用的原因,Android会在那一刻触发它,它不是应用程序中处理的东西。当然你可以在另一个线程中创建一个服务,但除非像时钟一样计算时间是非常必要的,而且我不明白为什么会这样,Alarm对此更好。