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

一起学习,有错误请指出

转载于:https://blog.51cto.com/8599981/1404229

android binder与handler的简要理解相关推荐

  1. 理解Android Binder机制(1/3):驱动篇

    Binder的实现是比较复杂的,想要完全弄明白是怎么一回事,并不是一件容易的事情. 这里面牵涉到好几个层次,每一层都有一些模块和机制需要理解.这部分内容预计会分为三篇文章来讲解.本文是第一篇,首先会对 ...

  2. aidl使用_借助 AIDL 理解 Android Binder 机制——Binder 来龙去脉

    AIDL 是 Android Interface Definition Language(Android 接口定义语言)的缩写,它是 Android 进程间通信的接口语言.由于 Android 系统的 ...

  3. 理解Android Binder机制(3/3):Java层

    本文是Android Binder机制解析的第三篇,也是最后一篇文章.本文会讲解Binder Framework Java部分的逻辑. Binder机制分析的前面两篇文章,请移步这里: 理解Andro ...

  4. Android Binder(也许是最容易理解的)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  5. Android Binder通信一次拷贝你真的理解了吗?

        Android Binder通信一次拷贝你真的理解了吗? Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android Binder ...

  6. 安卓进阶(2)之android Binder通信理解

    关键字 aidl 进程间通信 binder机制 aidl 全名安卓接口定义语言,用于进程间通信.简单理解的话,就是类似应用的服务器和客户端.服务器开启一个服务处理数据,客户端传递数据以及响应回调.具体 ...

  7. [深入理解Android卷一全文-第九章]深入理解Vold和Rild

    为什么80%的码农都做不了架构师?>>>    由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的 ...

  8. [深入理解Android卷一全文-第十章]深入理解MediaScanner

    由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该由于纸质媒介的问题而中断.所以我将在CSDN博客中全文转发这两本书的全部内容. ...

  9. Android 系统(59)---Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)

    Android开发:Handler异步通信机制全面解析(包含Looper.Message Queue) 前言 最近刚好在做关于异步通信的需求,那么,今天我们来讲解下Android开发中的Handler ...

最新文章

  1. 互联网大脑如何产生“梦境“并形成元宇宙
  2. 64bit 简单汇编加法
  3. Cocoapods安装过程【转载】
  4. windows下 apache 二级域名相关配置
  5. [机器学习]梯度提升决策树--GBDT
  6. 0401互联网新闻 | 企业微信新版发布;阿里巴巴发布“AI谣言粉碎机”
  7. Eltwise_layer简介
  8. Windows Notepad 迎来重大更新!
  9. directx sdk march 2009_小视科技极致轻量级模型人脸识别sdk支持活体检测总模型仅8M...
  10. AngularJs自定义指令的详解
  11. secoclient Linux安装
  12. 学会演讲必看的五本书籍推荐
  13. gradle启动项目编译报错:Executing task ‘clean‘...Task execution finished
  14. 实现Discord聊天机器人
  15. ValueError: Solver lbfgs supports only ‘l2‘ or ‘none‘ penalties, got l1 penalty.
  16. 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?
  17. Makefile: 参数-I (大写字母i), -l (小写字母l) 和-L的区别
  18. 信源编码技术作业(1)——使用Audacity软件绘制清浊音频谱图并进行分析
  19. 有没有比图灵机能力更强的计算模型?
  20. .net之EF框架学习

热门文章

  1. 60道Python面试题答案精选!找工作前必看
  2. 修改layui框架html,layui框架如何设置分页?(方法介绍)
  3. 单片机c语言 u16,单片机C语言的误用
  4. shouldParkAfterFailedAcquire
  5. HandlerMappings
  6. 分布式事务中的2PC
  7. toString和newString的原理
  8. annotationdriven
  9. File类获取功能的方法
  10. SpringBoot高级-消息-JMSAMQP简介