昨天开始认真研究了一下AIDL,使用AIDL绑定远程服务并且传递复杂自定义的参数,在使用过程中碰到了一些问题,网上的技术贴有很多不全面的,另外有些细节部分根本不会提到,然后就查找了很多技术贴,自己动手完整地实现了功能并且把出现的问题解决,这篇文章记录下来细节和要点,供自己忘记时温习。我们使用的自定义类为Pet和Person。
下面只指出细节和关键点:
1.服务端AIDL下的包和java下的包一一对应,如果你想把新建的Person类,Pet类放在一个包javabean中,那么在AIDL对应的包下也需要建一个javabean的包再建Person.aidl和Dog.aidl
2.Person类和Dog类的序列化,也就是实现Parcelable接口这里是大写,这里特别注意最后一个
readFromParcel方法,你用AndroidStudio自动的模板是没有这个方法的,所以是自己添加上去的。这里是一个坑,我们在IMyAidlInterface.aidl文件里面的代码如下:
package com.mike.servicepro; import com.mike.servicepro.javabean.Person; import com.mike.servicepro.javabean.Dog; interface IMyAidlInterface { String intInfo(in Person person);//in表明是由客户端到服务端 String outInfo(out Person person);//out表明是有服务端到客户端 String inoutInfo(