2 つのプロセス間でアクティブなオブジェクトを共有することを検討していますが、それに関するドキュメントはしばしば光沢がなく、間違っていることさえあります。
具体的には、パーセルを介して Binder オブジェクトを共有することを検討していました。ドキュメントの状態。
アクティブなオブジェクト
Parcel の珍しい機能は、アクティブなオブジェクトを読み書きできることです。これらのオブジェクトの場合、オブジェクトの実際の内容は書き込まれず、オブジェクトを参照する特別なトークンが書き込まれます。パーセルからオブジェクトを読み取るとき、オブジェクトの新しいインスタンスを取得するのではなく、最初に書き込まれたオブジェクトとまったく同じオブジェクトを操作するハンドルを取得します。使用可能なアクティブ オブジェクトには 2 つの形式があります。
Binder オブジェクトは、Android の一般的なクロスプロセス通信システムのコア機能です。IBinder インターフェイスは、Binder オブジェクトを使用して抽象プロトコルを記述します。そのようなインターフェースはすべてパーセルに書き込むことができ、読み取ると、そのインターフェースを実装する元のオブジェクト、または元のオブジェクトへの呼び出しを通信する特別なプロキシ実装のいずれかを受け取ります。使用するメソッドは、writeStrongBinder(IBinder)、writeStrongInterface(IInterface)、readStrongBinder()、writeBinderArray(IBinder[])、readBinderArray(IBinder[])、createBinderArray()、writeBinderList(List)、readBinderList(List)、createBinderArrayList() です。 .
ただし、パーセルを受け取ったときに返されるオブジェクトは単なる BinderProxy であり、元のクラスにキャストしたり、基本的な IBinder 呼び出し以外の呼び出しを実装したりすることはできません。これは明らかにドキュメントで言及されているプロキシ オブジェクトですが、同じステートメントでほのめかされた元のオブジェクトを参照するためのメソッドが何であるかを知りたいと思っていました。
また、このトピックがより完全に説明または文書化されているソースがあるかどうかも疑問に思っていました.