Android Binder,AIDL使用流程及进程之间的事件分发

栏目: Android · 发布时间: 6年前

内容简介:我们都知道,在Android中,进程之间的数据是相互隔绝的。于是进程间通行就需要通过IPC(统进程间通信)的方式进行。而Binder就是在Android中IPC的一种方式,关于Binder机制实现的底层原理,因为过于复杂在这就不再表述。下面主要讲解下在Android中通过AIDL实现进程间通信的过程。在开发项目中,有时候我们会因为内存或者其他一些原因的考虑,把Activity或者服务设置在不同的进程里面,这时候如果我们使用一些事件分发,因为进程的不同,有些地方就接收不到消息。这时候我们会考虑能否先通过IPC

我们都知道,在Android中,进程之间的数据是相互隔绝的。于是进程间通行就需要通过IPC(统进程间通信)的方式进行。而Binder就是在Android中IPC的一种方式,关于Binder机制实现的底层原理,因为过于复杂在这就不再表述。下面主要讲解下在Android中通过AIDL实现进程间通信的过程。

概述

在开发项目中,有时候我们会因为内存或者其他一些原因的考虑,把Activity或者服务设置在不同的进程里面,这时候如果我们使用一些事件分发,因为进程的不同,有些地方就接收不到消息。这时候我们会考虑能否先通过IPC先分发至不同的进程,然后再在各自进程中进行分发处理呢。下面我们通过项目来实现及了解AIDL的使用。

GitHub

相关代码请点 这里

AIDL开发

AIDL创建

首先我们通过"右击 》 New 》 AIDL 》 AIDL File进行创建aidl文件,创建完成后main文件目录下生成一个aidl的文件夹,并在文件夹下面生成与项目相同包名目录,新创建的aidl文件就在其中。

Android Binder,AIDL使用流程及进程之间的事件分发

自定义类型创建

在ALDL中,支持的数据类型有如下几种:

byte、char、short、int、long、float、double、boolean、String,CharSequence
List、Map(lsit和map内的类型必须是支aidl的类型)
复制代码

如果需要支持自定义类型就需要自定义创建。 首先我们在 java 目录下创建一个.java文件。然后继承 Parcelable 接口。 建议先进行参数设置,然后通过implement methods添加相关方法实现。

Android Binder,AIDL使用流程及进程之间的事件分发

然后在aidl文件目录下相同包名下创建同名.aidl文件。 ps:注意一定要包名相同,文件名相同。

Android Binder,AIDL使用流程及进程之间的事件分发

然后把aidl文件的内容改成“parcelable name” ps:注意这里的parcelable都是小写。

Android Binder,AIDL使用流程及进程之间的事件分发

完成后我们自定义类型就可以在AIDL中进行使用了。

通过ITermiteAidlInterface.Stub生成IBinderd对象,并在onBind中进行返回,客户端尽可以通过bind方式进行连接访问。 RemoteCallbackList可以储存存储客户端传过来的回调对象,且不会因为跨进程原因造成对象不一致问题。 至此,AIDL使用方式使用基本完成,服务端编写完成,下面看客户端的调用方式。并在Application初始化时根据不同进程打印日志。运行后得到日志证明两个activity在不同进程启动

观察日志,在两个进程中均接收到了消息回调。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

释放潜能:平台型组织的进化路线图

释放潜能:平台型组织的进化路线图

穆胜 / 人民邮电出版社 / 2017-12 / 59.80元

传统的组织模式中,企业逃不出“员工动不起来”和“创新乏力”的宿命。互联网改变商业逻辑的同时也改变了组织逻辑。平台型组织是匹配互联网商业逻辑的组织模式,它赋予了基层员工更多的责权利,能够在需求侧灵敏获取用户刚需、在供给侧灵活整合各类资源、用“分好钱”的机制激活个体去整合各类资源满足用户刚需,形 成供需之间的高效连接。 打造平台型组织有两大主题:一是通过设计精巧的激励机制让每个人都能感受到市场的压力,......一起来看看 《释放潜能:平台型组织的进化路线图》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具