Android AIDL进程间通信

嗨,大家好,本人菜鸟一枚,写的不对的地方还希望大家多多指正,禁止吐槽哈,新账号,新开端,希望各位小哥哥小姐姐们多多支持,哪怕你轻轻的一个小赞就是对我最大的认可。也是我以后更新博客的动力。以后我会坚持每周更新一篇博客,也会做到每篇博客质量的最大化,好了,废话不多说了,咱们进入正题。

一、进程

    首先说说进程是什么,以计算机语言说进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

这么说你可能不太明白那我换个说法:进程是一个具体的应用程序,进程中包括线程,进程中可以有一个或多个线程。一个应用程序可以有一个或多个进程。我们正常的APP基本上都是一个进程,但有部分APP是多进程,那么我们今天要做的事就是进程间通信,如果这两个APP都只有一个进程也可以说是这两个APP间的数据通信。

二、AIDL

AIDL (Android  Interface Definition Language)Android接口定义语言,我们可以理解为两个单进程程序之间数据交互的一个接口。接下来使用:

首先我们新建个项目叫AIDLServer,我们可以理解这个APP为服务端,接下来我们在src目录下创建AIDL folder 目录,如果你没有在android studio上找到这个方式,也可以在src目录下右键创建文件夹aidl。

1


既然文件夹创建了下面就该创建文件了,同样的方式在aidl文件上右键New AIDL AIDL File创建AIDl文件


2


创建完之后是这样的,它会自动生成一个和项目相同的包结构,我们就以它默认的包名就可以,aidl文件里会有个默认的basicTypes接口,我们一般不用直接删掉就可以。下面说下aidl语法,aidl语法与java及其相识,你可以把它当做java接口编写。

aidl支持的类型有:byte 、short、int、long、float、double、boolean、char、CharSequence、String、List、Map。如果想要使用自定义类型可以使用parcelable关键字。

aidl主要与java不同之处在于定向tag,定向tag是写在参数前面的一种标识,表示这个参数是双向传输还是单向传输。定向tag一共有三个分别为:in、out、inout。其中in你可以理解为java中的输入流也就是客户端往服务端输入,out也就相当于java的输出流,inout意思是输入输出流也就是双向都可以,另外,Java 中的基本类型和 String ,CharSequence 的定向 tag 默认且只能是 in 。不懂的话去搜下java输入输出流。


3


接下来我们定义一个接口String getData(String inData),接口可以根据自己的业务自己定义。定向tag默认标识为in,我们通过客户端调用getData 传入参数在服务端处理并返回,等下你们也可以把String 改成List或Map试下inout 效果。接口方法定义完之后要Rebuild 或 clear下项目,因为android studio 需要把我们编写的aidl接口编译进项目。


配合server编写接口具体逻辑,可以理解为aidl接口的实现类。


5



6


接下来在manifest中为当前server增加android:exported属性,意思是当前服务可以其他应用程序调用。增加Intent-filter name方便其他程序调用,具体如下:


7


好了,到此为止服务端代码编写完成了,接下来就是客户端的啦。

首先新建项目,并把服务端aidl目录下所有文件复制客户端aidl目录下并builde或clear,记住包名也用复制进来。


8



9



10



11


好了,运行下,输出效果如下,客户端传入客户端并由服务端处理后返会如下:

12


总结一下,主要流程分为三步:

1、编写aidl接口。

2、通过Stub编些具体逻辑并通过server onBind方法返回实例。

3、编些客户端通过Stub.asInterface接口获取实例。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容