When creating a service that provides binding, you must provide an
IBinder
that provides the programming interface that clients can use to interact with the service. There are three ways you can define the interface:
Extending the Binder class,
Using a Messenger,
Using AIDL。When you need to perform IPC, using aMessenger
for your interface is simpler than implementing it with AIDL, because Messenger
queues all calls to the service, whereas, a pure AIDL interface sends simultaneous requests to the service, which must then handle multi-threading.