Android系统-进程-AIDL

本文介绍了Android中的AIDL(AndroidInterfaceDefinitionLanguage)在进程间通信中的应用,包括AIDL的概念、序列化与反序列化的原理,以及Serializable和Parcelable接口在持久化和网络数据传输中的角色,重点讲解了数据流方向的控制。
摘要由CSDN通过智能技术生成

引言:

Android系统的进程间通信,主要是Binder,AIDL就是一种Android接口定义语言,主要就是为了能更简单方便地实现跨进程通信。

概念与理解:

AIDL:Android Interface Definition Language

序列化:一个对象可以表示为一个字节序列,该字节序列中包含对象类型,对象的数据及其数据类型。

反序列化:通过反序列化,可以根据字节序列内的内容重新在内存中新建这个对象。

主要的应用场景:

1)永久的保存对象,保存对象的字节序列到本地文件中。

2)通过序列化对象在网络中传递数据

3)通过序列化对象在进程间传递数据

Serializable接口:Serializable来实现序列化相当简单,只需要在类的声明中添加指定的serialVersionUID即可。对象的序列化和反序列化的工作都是系统自动完成了

 pacelable接口:Android特有的一个实现序列化的方式。只要实现这个接口,这个类的对象就可以实现序列化并可以通过Intent和Binder传递。在序列化过程中需要实现的功能包括:

1)序列化,WriteToPacel;

2)反序列化,ReadFromParcel;

3)内容描述,describeContents;

https://blog.csdn.net/hust_edu_csdn_123/article/details/100015327

AIDL 规定了数据流方向

 in
其中 in 表示数据只能由客户端流向服务端,表现为服务端将会接收到一个那个对象的完整数据,但是客户端的那个对象不会因为服务端对传参的修改而发生变动;
out
out 表示数据只能由服务端流向客户端,表现为服务端将会接收到那个对象的的空对象,但是在服务端对接收到的空对象有任何修改之后客户端将会同步变动。
inout
inout 则表示数据可在服务端与客户端之间双向流通,nout 为定向 tag 的情况下,服务端将会接收到客户端传来对象的完整信息,并且客户端将会同步服务端对该对象的任何变动
AIDL用法详解_aidl使用_sunnyPP123的博客-CSDN博客

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值