学习Binder笔记

来源:互联网 发布:数据库点赞表 编辑:程序博客网 时间:2024/06/13 00:14

1. Binder相当于服务端和客户端建立连接的桥梁。服务端service的其中一个作用就是为我们创建Binder,当客户端bindService的时候,通过ServiceConnection与服务端建立连          接。然后,利用其返回的iBinder参数获取服务端Binder对象。

2. Binder在服务端和客户端交互的过程。首先,服务端和客户端连接之后,客户端会根据拿到的服务端的binder对象,调用服务端的transact()方法并写入相关数据;然后,服务端      调用onTransact()并根据客户端的相关数据做相应处理并写入到返回结果中;最后,客户端的transact()方法中就可以读取到客户端返回的数据。

3. AIDL的作用是跨进程通信,如果一个项目需要用到其他项目中的某些数据或者方法,这时我们就可以通过在XXX.aidl文件中定义相应的方法。

比如,我们在IUserManager.aidl文件中定义了一些方法,这个就相当于我们自定义的接口,在里面完成我们的操作。

在使用AIDL的过程中需要注意:(1)上面的IUserManager.aidl文件中对aidl文件夹下的哪个进行了操作,也就必须手动导入aidl文件夹下面的相应文件的包名;(2)如果过程中要操作某个实体类,就必须写一个与实体类同名的aidl文件,如上图User.aidl和User.java文件;(3)aidl的包名不一定要和项目包名一致,但是被操作的实体所在的包名必须和aidl文件夹下面同名的aidl文件所在包名一样,比如User.java和User.aidl所在的包名都是com.example.android.test_aidl 。