androidbinder与handler的简要理解-创新互联

android的进程之间的通信 采用binder机制,我们先弄明白binder到底是什么。

莘县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

其实binder属于一个驱动,位于linux内核层,它的作用是完成进程间的通信。

而binder机制包括4个方面,分别是client(客户端),service(服务端),servicemanager(一个系统服务),binder驱动,

下面用一张图来表示它们的关系:

android  binder与handler的简要理解

可以看到 client,service,和servicemanager都运行在用户空间,binder驱动则运行在内核空间,现在简单的分析一下各个部分,首先是client,一般就是我们的activity,service则是我们进行想要通信远程服务。

servicemanager是一个守护进程,负责管理服务,所有的service都需要想它进行注册,在binder机制中它给client提供查询和获取service的接口.

最后是binder驱动,它是一个字符设备驱动,client和service通过open()和ioctl()2个文件操作函数与它进行通信,从而实现了client向service发出请求,而service处理请求将并返回给client,简单的说binder驱动就是提供了一切的底层支持。

理论说了那么多,现在简单说一下,如何使用binder机制进行通信,分为以下几个步骤:

1 获取ServiceManager的对象引用

2 注册我们的Service

3 在client中通过ServiceManager获取Service对象的引用

4 在client中发送请求,service中返回结果。

关于binder机制就讲这么多了,具体可参照下面这篇文章:

http://blog.csdn.net/yueliangniao1/article/details/7188549

接下来是android种handler机制的简单理解。handler机制用于线程之间的通信,巧合的是线程通信机制也恰好由4个部分组成分别是:

1 looper 一个线程可以产生一个looper对象(不一定每一个线程都会有,得有相应的操作才行),负责管理该线程的消息队列

2 handler 我们可以构造一个handler对象来与looper对象进行沟通,实现push新的消息进入消息队列,或是获取looper从消息队列中取出的消息

3 MessageQueue(消息队列)存放线程放入的消息

4 Message 消息对象

线程就是通过这4个部分来负责通信的,下面提供一张图来表示它们之间的关系:

android  binder与handler的简要理解

handler机制一般用于更新UI,应用程序启动的时候,将会创建一个主线程,主线程也就是所谓的UI线程,通过handler机制则子线程可以更改程序的UI。相关信息可以参考下面这篇文章:

http://blog.sina.com.cn/s/blog_8e1ceddc0101g6ao.html

一起学习,有错误请指出

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:androidbinder与handler的简要理解-创新互联
网站网址:http://cdiso.cn/article/dohcid.html

其他资讯