【问题标题】:BroadcastReceiver when application is not running应用程序未运行时的广播接收器
【发布时间】:2012-05-22 17:53:26
【问题描述】:

我在清单中注册了一个BroadcastReceiver,它接收来自AlarmManager 的通知。这一切都在应用程序运行时运行良好,即正在调用 onReceive() 方法。

但是,如果我强制停止应用程序以便测试BroadcastReceiver 在不运行时是否仍会收到来自AlarmManager 的通知,则永远不会调用onReceive() 方法。

这种方式可以不用强制停止来测试AlarmManager&接收器吗?似乎有些回应说它不起作用,有些回应说应该。

如果没有,有没有办法测试这个?

【问题讨论】:

  • 您是否在清单上定义了BroadcastReceiver
  • @jFort :您是否使用WAKEUP 类型之一进行警报?如果不是,那可能是原因,但我不确定。
  • 是的,广播接收器是在清单中定义的。并且报警管理器定义为AlarmManager.RTC
  • @jFort : 只有RTC?不是RTC_WAKEUP
  • 我认为 RTC_WAKEUP 会唤醒设备,但它们只是简单的提醒,所以我不打算这样做。

标签: android broadcastreceiver alarmmanager


【解决方案1】:

如果您的接收器已在您的清单中注册,它应该始终有效。即使您的应用程序被强制关闭。

问题可能是警报。一旦您的应用程序强制关闭,警报可能会被删除。

【讨论】:

  • 对于android > 3.0版,当您的应用被强制关闭时,您的接收器将停止工作!
  • 正如 Hoang 所说,这个答案多年来和许多 Android 版本都不正确。
  • 我没有使用警报管理器我正在使用呼叫/电话状态广播接收器我遇到的问题是当时应用程序没有运行时呼叫广播没有得到
  • 您找到解决方案了吗?我面临同样的问题@MehulTank
  • @BrindaRathod 你可以添加 android:enabled="true" android:exported="true" intent-filter android:priority="999"
【解决方案2】:

根据this answer 上的 cmets,您无法通过自己杀死应用程序来测试这种类型的东西。您必须抛出一个异常,以便应用程序“自然地”死掉。

【讨论】:

    【解决方案3】:

    这可能是您的设备问题。在小米、OPPO、vivo、honor 和乐视手机中,用户必须授予应用程序自动启动权限,为此,您应该要求用户手动启用此功能,您无法以编程方式完成此操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多