我期待到共享两个过程之间的活动对象,然而,文档中有关它往往是无光泽和有时even incorrect.在进程之间共享活动对象的正确方法是什么?
具体来说,我正在研究通过共享包裹一个活页夹对象。该文件说明。
活动对象
包裹的一个不寻常的特点是读写活动对象的能力。对于这些对象,不写入对象的实际内容,而是写入引用该对象的特殊标记。从Parcel中读回对象时,您不会获得对象的新实例,而是一个对原来写入的完全相同对象进行操作的句柄。有两种形式的活动对象可用。
Binder对象是Android通用跨进程通信系统的核心工具。 IBinder接口描述了一个带有Binder对象的抽象协议。任何这样的接口都可以写入到一个Parcel中,读取后您将收到实现该接口的原始对象或者将调用回传给原始对象的特殊代理实现。使用的方法是writeStrongBinder(IBinder),writeStrongInterface(IInterface),readStrongBinder(),writeBinderArray(IBinder []),readBinderArray(IBinder []),createBinderArray(),writeBinderList(List),readBinderList(List),createBinderArrayList() 。
但是,当收到包裹时,返回的对象仅仅是一个BinderProxy,它不能转换为原始类或实现超出基本IBinder调用的任何调用。虽然这显然是文档中提到的代理对象,但我想知道该方法用于引用在同一语句中提到的原始对象。
我还想知道是否有一个来源,更详细地解释或记录了这个话题。
不幸的是,以这种方式使用parcelable编组该类,然后在取回时取消编组,意味着该对象仅仅是在新进程中重新创建,而不是作为主动对象。 – Beryllium