个人总结/AIDL

AIDL(Android Interface Definition Language)

    AIDL是android接口定义语言,为了实现进程间通信,进程并发下的进程间通信

默认支持:1.Java的8种基本数据类型 2.String 3.char 4.List 5.Map 6.Parcelable 7.AIDL

【定向TAG】:AIDL中的定向tag表示了在跨进程通信中数据的流向

                        in表示数据由客户端->服务端(服务端接收完整数据,客户端不变)

                        out表示数据由服务端->客户端(服务端接受空对象,对空对象存储改变)

                        inout自由双向(2,3类型数据默认且只能为in


两种AIDL文件:1.parcelable Book(用来定义Parcelable对象,以供其他AIDL文件使用非默认支持的数据类型)

                         2.导入Bean类的包 (定义方法接口,以供系统使用来完成跨进程通信)

AIDL小练习

1.创建实现P接口的Bean类+重写readFromParcel()

2.书写AIDL内容 interfaceBookManager

3.移植相关文件,将aidl包复制到另一端的main目录下

4.在服务端实现AIDL中定义的方法接口具体逻辑,然后在客户端调用这些方法接口

5.重写BookManager.Stub中的方法,跑出RemoteException,使用synchronized(this)保证在同一时刻最多只有一个进程进行这段代码

tips:【java并发编程】            

            synchronized和Lock(保证原子性):保证任一时刻只有一个线程执行该代码块

         保证可见性 volatile:共享变量被此修饰,他会保证修改的值立即被更新到主存,有其他线程读取会去内存中读取(同上)

         保证有序性 volatile可以,同synchronized和Lock,先天“有序性”:happens-before原则

6.编写客户端代码:按钮点击事件,如果与服务端连接X attemptToBindService()->intent.setAction("aidl")

                                                                                                                                  intent.setPackage("包名")

    在其中给Book设置参数,添加入BookManager中,包裹异常

    在onStart中,也添加attemptToBindService,在onStop中添加unBindService

    实例化ServiceConnnection,在onServiceConnected中,反录mBookManager(.asInterfaceService)输出book信息


分析AIDL





    





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值