我有一个网络更改接收器类,它从广播接收器扩展,但我不太确定它是否在 android Oreo 中工作,奥利奥是否支持广播接收器,如果它不支持,还有什么方法可以做到
最佳答案
Oreo 支持广播接收器,但带有 list 中声明的对隐式广播的一些限制。
隐式与显式广播:
According to the documentation ,隐式广播是不专门针对该应用程序的广播。例如, ACTION_PACKAGE_REPLACED
是一个隐式广播,因为它被发送给所有注册的监听器,让他们知道设备上的某些包已被替换。
但是,ACTION_MY_PACKAGE_REPLACED
不是隐式广播,因为它只发送到包被替换的应用程序,无论有多少其他应用程序为该广播注册了监听器。
因此,我们在应用程序 list 中静态定义的任何正在监听隐式广播的广播接收器将不再接收这些广播。
这种变化的原因是隐式广播之前会触发任何在 list 中监听它们的组件——这可能会对应用程序和设备性能产生不利影响,因为注册接收特定广播的大量应用程序都在同时。
但是当涉及到隐式广播时,有一个异常(exception)列表 — 这意味着仍然有一些您可以注册以接收广播。它们都列在下面:
因此,如果您已为其注册接收器的广播在此列表中,那么它仍将像以前一样运行。但是,如果您注册接收的广播不在此列表中,那么您应该使用一些替代解决方案,例如:
Context.registerReceiver()
在运行时创建接收器,而不是在 list 中声明接收者。
触发了隐式广播。
For more information
关于android - Android Oreo 上的广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798985/