我对服务创建期间的编组有一个简单的疑问。如果在生成的存根中调用了writeToParcel()接口中声明的Parcelable方法(如果aidl方法参数声明为in),为什么在readFromParcel()接口中没有Parcelable声明(对于out参数)?
我可以创建自己的readFromParcel(),但根据我的理解,如果生成的存根想要调用它,那么在Parcelable接口中应该有一个重写的readFromParcel()声明。但是Parcelable interface的文档没有显示任何readFromParcel()方法的迹象。为什么会这样?它是否包含在以前的api版本中,后来又被删除了?请解释一下!
如果createFromParcel()和readFromParcel()都试图读取Parcelable对象并用其中的数据填充成员字段,那么两者的区别有多大?

最佳答案

这是因为您在aidl中将该类型的参数声明为“inout”。
从方法返回时,生成的aidl代理将调用readFromParcel()来更新参数值(由“inout”限定符定义)。

09-28 12:52