android - Android Oreo 上的广播接收器

标签 android android-studio broadcastreceiver android-8.0-oreo

我有一个网络更改接收器类,它从广播接收器扩展,但我不太确定它是否在 android Oreo 中工作,奥利奥是否支持广播接收器,如果它不支持,还有什么方法可以做到

最佳答案

Oreo 支持广播接收器,但带有 list 中声明的​​对隐式广播的一些限制。

隐式与显式广播:

According to the documentation ,隐式广播是不专门针对该应用程序的广播。例如, ACTION_PACKAGE_REPLACED 是一个隐式广播,因为它被发送给所有注册的监听器,让他们知道设备上的某些包已被替换。

但是,ACTION_MY_PACKAGE_REPLACED不是隐式广播,因为它只发送到包被替换的应用程序,无论有多少其他应用程序为该广播注册了监听器。

因此,我们在应用程序 list 中静态定义的任何正在监听隐式广播的广播接收器将不再接收这些广播。

这种变化的原因是隐式广播之前会触发任何在 list 中监听它们的组件——这可能会对应用程序和设备性能产生不利影响,因为注册接收特定广播的大量应用程序都在同时。

但是当涉及到隐式广播时,有一个异常(exception)列表 — 这意味着仍然有一些您可以注册以接收广播。它们都列在下面:

enter image description here

因此,如果您已为其注册接收器的广播在此列表中,那么它仍将像以前一样运行。但是,如果您注册接收的广播不在此列表中,那么您应该使用一些替代解决方案,例如:

  • 通过调用 Context.registerReceiver() 在运行时创建接收器,
    而不是在 list 中声明接收者。
  • 使用计划的作业来检查可能具有的条件
    触发了隐式广播。

  • For more information

    关于android - Android Oreo 上的广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798985/

    相关文章:

    android - 适用于平板电脑的 html5 应用程序 : possible to load images from device's filesystem?

    android - 我总是在 android 7 中看到 "E ActivityManager: Sending non-protected broadcast from system"。这是什么意思?

    java - 添加计时器并卡住应用程序(android studio)

    java - 广播接收器未收到 BOOT 和 MEDIA_MOUNTED Intent

    android - ICS 中的广播接收器

    android - Flutter:如何让外部应用程序打开文件(如Android的隐式 Intent )?

    java - 如何将写入的数据追加到文件中?

    Android Studio 任务compilefreeDebugKotlin 执行失败

    java - 更新后android studio中的编译错误

    android - 唯一标识一个警报管理器并重新安排它