AIDL生成Java类的细节:
流程图:
有一点要注意的是,IBinder的transact()方法中有个flag参数,0表示同步处理,IBinder.FLAG_ONEWAY表示异步处理。
Java层和native层的流程表现:
为什么Intent不能传递大数据?
Activity的底层通讯是通过Binder,kernel分配给Binder的大小就是size=1M-8K(同步的情况),但是我们直接传1M-8K报错,因为在使用Binder通讯的时候,我们传递、获取数据都会放在一个包内:Parcel.obtain,这个包也有大小的。
异步情况:size<(1M-8K)/2;同步情况:size<(1M-8K)
四大组件底层的通信机制:
内部使用的也是Binder,待续。。。。。