Android(6)Broadcast Receiver总结

来源:互联网 发布:阿里云liux开端口命令 编辑:程序博客网 时间:2024/05/20 12:21

Receiver

通常我们会用Recevier实现将消息进行广播出去,这时具体的操作流畅我们不行哟啊了解,但是如果认识到底层的实现,相信在以后的Coding中会减少自己挖坑的次数= =。

Broadcast Receiver简介

广播接收器是可以静态在Manifast中注册,也可以通过代码动态注册,但是动态注册的广播必须进行解注册。
在我们对接收器进行注册时可以声明过滤器,以表明我需要接受哪些信息。

IntentFilter filter = new IntentFilter();filter.addAction("action");registerReceiver(new Receiver(), filter);

注册之后我们就可以发送消息了。

Intent intent = new Intent();intent.setAction("action");sendBroadcast(intent);

Broadcast Receiver基本原理

不管是动态还是静态,当我们对接收器进行注册的时候,后台都会是ReceiverDispater来实现我们自己的BroadcastReceiver
和InnerReceiver之间的通信,和Service很像,当系统为我们发送消息的时候用的时InnerReceiver,这也是一次IPC,因为广播接收器有可能不在同一个进程之内,这样通过InnerReceiver可以很方便的调用BroadcastReceiver的onReceive方法,完成消息的分发。
当然其中还是会用到ContextImpl->ActivityManagerService->BroadcastQueue->ApplicationThread->H->ActivityThread的一些方法。

0 0
原创粉丝点击