android - BroadcastReCeiver 内部实现

标签 android broadcastreceiver android-service intentservice android-broadcastreceiver

我想了解广播接收器的内部工作原理。

当我调用 registerReceiver() 方法时内部发生了什么?它是否在内部创建服务?

当我调用 sendBroadcast 时内部会发生什么?

如果我必须实现自己的 BroadcastReceiver 类(不扩展 Android BroadcastReceiver 类)我该如何实现?

我做了很多研究,但我只发现了 BroadcastReceiver 是如何工作的。我也查看了 Android 源代码以了解它是如何工作的,但它也没有帮助。

最佳答案

您写道,您需要在不扩展 Android BroadcastReceiver 的情况下实现 BroadcastReceiver。这不可能。 Android 框架处理所有广播 Intent 的分派(dispatch)和传递到所有已将自己注册为这些 Intent 的监听器的组件。当某些应用程序调用 sendBroadcast() 时,Android 会检查是否有任何 BroadcastReceiver 已注册为该 Intent 的监听器,如果找到,它会实例化组件(如果尚未实例化),然后调用组件的 onReceive() 方法。

如果您不扩展 Android 的 BroadcastReceiver,您将无法将您的组件注册为监听器,Android 也不会调用您的类的 onReceive()

注意:如果您需要更多帮助,请说明您真正想做什么。

关于android - BroadcastReCeiver 内部实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34754615/

相关文章:

android - 运行时异常-无法启动接收器

android - 加载数据后隐藏 ProgressDialog

android - 如何用C++编写Android服务

启动位置服务时出现java.lang.SecurityException

android - 如何在录制时从(n Android)手机上传视频

java - 通过辅助服务传递数据以查看 – Android

android - 在 Android 5.0 (Lollipop) 上运行时使用 APP_STL=c++_shared 在 sscanf 中挂起

android - 自定义开关 - 轨道和选择器大小在 21 API 以下不起作用

java - TimerTask 和广播接收器 onReceive

android - 如果应用程序在后台运行,则丢失网络 android 6 及更高版本