AIDL通信原理
AIDL (Android Interface Definition Language),通过定义通信接口来实现进程间通信。这是Google提供的一种在安卓应用进程间通信的工具。所以要了解AIDL的通信原理,我们需要围绕以下两个问题来展开。
1、为什么需要AIDL?
我们都知道AIDL的目的是进行进程间通信。所以在了解AIDL原理之前先要了解一下什么叫进程间通信。进程间通信涉及到两个名词,一个是进程间,一个是通信。进程间就是两个或多个进程之间,所以这里先要明确一个概念,进程间通信涉及到多个实体。其次是通信,什么是通信呢?打电话,发邮件,发QQ消息都是通信,他们之间的共同点就是数据交换。所以简单来说,进程间通信就是多个多个实体间的数据交换,而且这些数据都是运行时数据,因为通信实体是运行时产生的。那么一般情况下,我们的应用程序是怎样进行数据交换呢?最简单的办法就是共享内存,即建立内存共享区,然后进程B往内存共享区里写,进程A从内存共享区里读,从而完成通信。但是在安卓里是行不通的,因为单独的进程是运行在自己的虚拟机里面,有着自己的内存映射,所以内存共享没法实现,只能借助AIDL。
2、AIDL是怎么起作用的?
在这之前,我们先讨论AIDL的实现步骤:
1)、定义AIDL文件;
2)、实现AIDL文件里面定义的接口;
3)、暴露接口;
4)、调用;
这四个过程可以类比于c/s模型,如果一个客户端需要访问服务器中的某一个网页,它需要经过几个步骤呢?同样也是需要四个:
1)、定义通信规则,已经有了现有的规则——tcp/ip协议族;
2)、在服务器中编写网页文件;
3)、暴露资源文件的访问地址;
4)、客户端发起请求,获取资源,完成通信;
从上面这个对比可以看出,这里面的关键就是定义协议这一步,即定义AIDL文件的过程,之后有一个重要的过程,即编译AIDL文件,这里编译器为我们做了一个最重要的一步,生成了一个Stub类,这个类是个抽象类,继承自Binder类,并实现了我们在AIDL文件中定义的接口,所以我们最终对接口对象的操作最终都转换成了Stub对象的操作,具体的通信过程有Stub对象为我们完成了,也就是拆分对象数据,和生成对象数据这些繁琐的事情。所以AIDL的通信原理其实只是定义了通信规则,具体的实现还是靠binder.所以最终的分析结果就是,AIDL将我们需要传递的数据拆分后,通过Binder传递。在访问端AIDL把接收到的结果组装成我们期望的对象,把底层的操作屏蔽了。
AIDL通信原理的更多相关文章
- 基于web的IM软件通信原理分析
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
- SSL 通信原理及Tomcat SSL 配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- Java 下 SSL 通信原理及实例
有关SSL的原理和介绍在网上已经有不少,对于Java下使用keytool生成证书,配置SSL通信的教程也非常多.但如果我们不能够亲自动手做一个SSL Sever和SSL Client,可能就永远也不能 ...
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
1. Socket (1)Socket套接字 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字 (2)Socket原理机制: • 通信两端都有Socket. • 网 ...
- Python Socket通信原理
[Python之旅]第五篇(一):Python Socket通信原理 python Socket 通信理论 socket例子 摘要: 只要和网络服务涉及的,就离不开Socket以及Socket编 ...
- RS-232通信原理
rs232串口通信原理 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆).大多数计算机包含两个基于RS232的串口.串口同时也是仪器 ...
- SSL 通信原理及Tomcat SSL 双向配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- 由于用mpu6050模块,所以要用上i2c通信原理。
i2c通信原理 i2c总线只有两根双向信号线,一根是数据线SDA,一根是时钟线SCL. 每个接到i2c总线上的器件都有唯一的地址,主机与其他器件之间的数据传送可以是由主机发送给其他器件.主机为发送器, ...
随机推荐
- poj1054The Troublesome Frog
链接 想O(n*n)的DP 怎么想都超内存 看讨论有说hash+DP过的 实现比较繁琐 大部分直接暴力过了 直接枚举每个i j 与他们在一条线上的点 是不是给出的点 注意它必须能跳进和跳出 #inc ...
- windows下的BT服务器搭建方案
BT下载可以说是目前网络上最流行的P2P文件共享方式了.BT服务器相比于FTP服务器有许多优势,其中最重要的一点就是BT服务器不受服务器带宽和连接到服务器用户数量的限制,能够提供高速的下载服务.今天, ...
- 一步步写STM32 OS【四】OS基本框架
一.上篇回顾 上一篇文章中,我们完成了两个任务使用PendSV实现了互相切换的功能,下面我们接着其思路往下做.这次我们完成OS基本框架,即实现一个非抢占式(已经调度的进程执行完成,然后根据优先级调度等 ...
- Growling Gears
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11587 G Growling GearsThe Best A ...
- 【libsvm学习】
参考: http://www.cnblogs.com/bigshuai/articles/2883256.html http://www.cnblogs.com/tornadomeet/archive ...
- table显示json数据传递
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Java笔记(四)……常量与变量
常量 常量表示不会改变的数值. Java中常量的分类: 整数常量:所有整数 小数常量:所有小数 布尔型常量:较为特有,只有两个数值,true false 字符常量:将一个数字字母或者符号用单引号(' ...
- windows 7 下安装 IIS 和 ArcGis Server 9.3 遇到的问题及解决方法
windows 7 下安装 IIS 和 ArcGis Server 9.3 遇到的问题及解决方法 分类: ArcGIS server 计算机2012-07-31 14:17 631人阅读 评论(0) ...
- 教程-FastReport 的安装 心得
由于要使用报表,所以下载了FastReport 4.7.91,由于是第一次安装和使用FastReport报表,所以在安装的时候走了点弯路.把心得写一下吧. 我是第安装第二遍才完全理解安装过程,也可以定 ...
- hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...