【问题标题】:Android Alarm Manager and Pending IntentAndroid 警报管理器和待定意图
【发布时间】:2014-11-27 07:19:39
【问题描述】:

我正在查看Android 中Alarm Manager 的页面,发现我们可以使用Pending Intent 在使用此功能一段时间后触发组件。

我可以看到这个功能的实用性,但我很想知道为什么要引入这个功能。应用程序不能自己计算时间并在一定时间后触发 Intent 吗?使用 Pending Intent 和 Alarm Manager 实现相同目标的独特优势是什么?

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    活动在 Android 中是不稳定的。 Android 可以决定随时销毁应用程序或暂停它。如果一个长时间运行的 Activity 被暂停或销毁,它如何知道当前时间并触发 Intent?警报管理器在系统中设置警报并在那个时间,或者大致在指定时间,取决于系统中设置的警报数量触发警报,您​​可以使用它来触发一个Intent。

    编辑:一个应用程序可以有一个服务。该服务是应用程序的一部分,并在应用程序线程上运行。您可以创建一个处理程序,以便它触发从当前时间到确定的秒数的一些代码,这一切都很好,因为该服务不会持续运行并将所有焦点放在主线程中。服务是运行其代码然后完成的东西。它不会留在那里等待某条线路。它在主线程上运行,因此如果服务中的代码始终在运行,它可能会导致应用程序出现 ANR。计算时间不是应该做的事情,就像服务中的 while 循环一样,因为它占用了所有的处理能力并冻结了应用程序。这就是为什么警报很有用的原因,Android 会在那一刻触发它,它不是您的应用程序中正在处理的东西。当然你可以在另一个线程中创建一个服务,但是除非真的需要像时钟一样计算时间,我不明白为什么会这样,Alarm 更适合这个。

    【讨论】:

    • 应用程序可以在服务中进行时间计数,因此恕我直言,这个答案并不完整。然而,反对该服务的论点是电池寿命。想象一下,您手机上的每个应用都会产生计时服务。让这个系统更容易做到这一点,但由于内部原因,它仍然会这样做。所以没有必要让应用程序用这些东西弄乱你的 RAM 和 CPU。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多