温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

android binder与handler的简要理解

发布时间:2020-05-28 22:21:12 来源:网络 阅读:6163 作者:华健123 栏目:移动开发

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

其实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


一起学习,有错误请指出

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI