ドキュメントには次のように記載されています。
サービスがローカル アプリケーションによってのみ使用され、プロセス間で動作する必要がない場合は、クライアントがサービス内のパブリック メソッドに直接アクセスできるようにする独自の Binder クラスを実装できます。
ただし、サービスがクライアントと同じプロセスで実行されている場合は、ConcurrentLinkedQueue などのスレッドセーフな構造を使用してデータを交換できます。
ドキュメントには次のように記載されています。
サービスがローカル アプリケーションによってのみ使用され、プロセス間で動作する必要がない場合は、クライアントがサービス内のパブリック メソッドに直接アクセスできるようにする独自の Binder クラスを実装できます。
ただし、サービスがクライアントと同じプロセスで実行されている場合は、ConcurrentLinkedQueue などのスレッドセーフな構造を使用してデータを交換できます。
Android Binder クラスの使用では、可能なメッセージングまたはデータ交換ソリューションには意味がありませんが、それなしで保証できるより高い操作性とセキュリティ レベルを提供する Android アーキテクチャに共通しています。
Android アプリケーション プログラマーの視点から見た最も重要な改善点は、リモート オブジェクトのメソッドを、ローカル オブジェクトのメソッドであるかのように呼び出せるようになったことです。これは、同期メソッド呼び出しで実現されます。したがって、呼び出し側のクライアント プロセスは、サーバー プロセスが応答している間ブロックされます。その利点として、クライアントは、クライアントからの非同期返信メッセージに対して脅威メソッドを提供する必要がありません。
インテントに付属するもう 1 つの機能は、インテント フィルターです。これはサービスまたはアプリの宣言であり、システムによってこのサービスまたはアプリにインテントが転送されます。ただし、インテント フィルターは明示的なインテントによってバイパスされる可能性があるため、すべてのインテントのセキュリティが保証されるわけではありません。最後に、セキュリティは、上記のように PID と UID のチェックに依存しています。
詳細については、 Android Binderを参照してください。Android プロセス間通信