2017-01-26 5 views
0

私は、リモートプロセスによって、サービスの利用のためにエクスポートとしてサービスをマークに加えて、アディル・インターフェースを作成する必要がある場合のようにまっすぐに答えを見つけることができません。エクスポートされたサービス対アディルサービス

私がこれまでに発見したすべてのアディルは、複数のイベントの同時実行を可能にするということですか?

答えて

1

他のアプリまたはプロセスがエクスポートされたサービス(たとえば、bindService())にバインドできるようにする場合は、AIDLを使用します。

代わりに、他のアプリやプロセスがstartService()でサービスを開始することを期待している場合は、AIDLは必要ありません。

+0

エクスポートされたマークが付いたサービスは開始できますが、プロセス境界からバインダーオブジェクト経由で操作することはできません。 – sousdev

+0

@justanother:正しい。 'bindService()'はAIDLなしで動作することができますが、自分のプロセス内のサービスに対してのみ動作します。プロセス間作業の場合は、AIDLと、AIDLが生成するコードが必要です。原則として、AIDLによって生成されたコードを調べ、自分自身でそれを複製しようとすると、プロセス間で 'bindService()'が動作するかもしれませんが、実際のそれがどれほど実用的であるのかわかりません。 – CommonsWare

+0

'' bindService()はAIDLなしで動作することができますが、自分自身のプロセス内のサービスに対してのみ動作します。プロセス間作業のためにはAIDLとAIDLが生成するコードが必要です "android.os .Messenger'または 'Binder'プロトコル(' transact() '/' onTransact() 'メソッドを使用する他のクラス)でもAIDLははるかに簡単です – pskink

関連する問題