androidbinder与handler的简要理解
android的进程之间的通信 采用binder机制,我们先弄明白binder到底是什么。
创新互联建站是一家集网站建设,贡觉企业网站建设,贡觉品牌网站建设,网站定制,贡觉网站建设报价,网络营销,网络优化,贡觉网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
其实binder属于一个驱动,位于linux内核层,它的作用是完成进程间的通信。
而binder机制包括4个方面,分别是client(客户端),service(服务端),servicemanager(一个系统服务),binder驱动,
下面用一张图来表示它们的关系:
可以看到 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个部分来负责通信的,下面提供一张图来表示它们之间的关系:
handler机制一般用于更新UI,应用程序启动的时候,将会创建一个主线程,主线程也就是所谓的UI线程,通过handler机制则子线程可以更改程序的UI。相关信息可以参考下面这篇文章:
http://blog.sina.com.cn/s/blog_8e1ceddc0101g6ao.html
一起学习,有错误请指出
当前标题:androidbinder与handler的简要理解
网站链接:http://ybzwz.com/article/igsisg.html