BroadcastReceiver工作过程

Posted 嘉禾世兴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BroadcastReceiver工作过程相关的知识,希望对你有一定的参考价值。

动态注册过程:

ContextWrapper.registerReceiver-->

ContextImpl.registerReceiver-->

ContextImpl.registerReceiverInternal-->

ActivityManagerNative.getDefault().registerReceiver-->

ActivityManagerService.registerReceiver-->

接着会把远程的InnerReceiver和IntentFilter对象存储起来

发送和接收过程:

ContextWrapper.sendBroadcast-->

ContextImpl.sendBroadcast-->

ActivityManagerNative.getDefault().boradcastIntent-->

ActivityManagerService.broadcastIntent-->

ActivityManagerService.broadcastIntentLocked-->

BroadcastQueue.scheduleBroadcastsLocked-->

BroadcastQueue.processNextBroadcast-->

BroadcastQueue.deliverToRegisteredReceiverLocked-->

BroadcastQueue.performReceiveLocked-->

ApplicationThread.scheduleRegisteredReceiver-->

InnerReceiver.performReceive-->

LoadedApk.ReceiverDispatcher.performReceive-->

ActivityThread.H.post(args)-->

args.run-->

BroadcastReceiver.onReceive

No1:

四大组件都是在应用安装时由PMS(PackageManagerService)解析并注册的。

No2:

android3.1开始,处于停止状态的应用同样无法接收到开机广播FLAG_INCLUDE_STOPPED_PACKAGES

而在Android3.1之前,处于停止状态的应用是可以收到开机广播的

以上是关于BroadcastReceiver工作过程的主要内容,如果未能解决你的问题,请参考以下文章

-四大组件的工作过程读书笔记

Android源码分析 BroadcastReceiver 注册过程

Android源码分析 BroadcastReceiver 注册过程

BroadcastReceiver 不工作(检测是不是连接了wifi)

BroadcastReceiver在Android上没有按预期工作

从最近的任务中删除应用程序时,Android静态BroadcastReceiver无法正常工作