gpt4 book ai didi

android - 使用 AlarmManager 和 Broadcast Receiver 启动 Android 服务

转载 作者:行者123 更新时间:2023-11-30 03:18:20 25 4
gpt4 key购买 nike

我有一个后台 Android 服务。它在后台运行,检查一些结果的 URL。如果结果发生变化,应用程序会向用户发送通知。我希望这项服务每 3 小时运行一次。我的问题是何时以及如何启动服务?

  • 一般行为是创建广播接收器。
  • 然后在接收方收到 ACTION_BOOT_COMPLETED 时启动服务。
  • 此外,当接收器完成启动时,接收器将使用 AlarmManager 并创建每 3 小时运行一次的警报。

但是安装应用后,如果用户没有重启他/她的手机怎么办?如果用户没有启动,AlarmManager 将不会创建警报。

  • 因此,另一种选择是在用户首次运行应用程序时创建警报。
  • 如果用户重新启动应用程序会怎样?我是否应该使用 AlarmManager.cancel 取消所有以前的警报并重新创建警报?

那么您在什么情况下为您的 Android 应用程序设置警报?

最佳答案

您有两种方法来创建初始警报,一种是在应用程序首次启动时,另一种更好的方法是让另一个广播接收器监听 ACTION_MY_PACKAGE_REPLACED。每当安装或更新应用程序时都会调用此方法,您可以在发生这种情况或重新启动时设置警报(因为重新启动会清除警报管理器中的警报)。然后每次服务运行时只需重置您的闹钟。

作为额外的提示,如果您还没有使用它们,请查看 Android WakeLock 文档。如果服务启动时没有设置唤醒锁,手机可能会在服务的 onStartCommand 之后立即进入休眠状态。即使您在服务中遇到某些错误情况(例如,网络连接丢失),也要确保重置警报。

编辑:有些人遇到过 ACTION_MY_PACKAGE_REPLACED 的问题。在这些情况下,可以使用 ACTION_PACKAGE_REPLACED,只要代码检查它是被替换的正确包即可:ACTION_MY_PACKAGE_REPLACED not received

关于android - 使用 AlarmManager 和 Broadcast Receiver 启动 Android 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19643491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com