Android进程间通信
1. Broadcast
You can use BroadcastReceiver when you want the communication between Service and Activity in your application.
Broadcast run in main thread.
使用场景:
既可以IPC又可以进程间.
2. Messager
Messenger’s and AIDL’s are mainly used when your application needs to communicate to other processes(IPC).
Now the difference between Messenger and AIDL is pretty simple. When you use Messenger, it queues all requests into a single thread. So your Service doesn’t have to be thread safe.In fact Messenger is implemented on the top of AIDL.
使用场景:
同一个应用内多个进程: 前台(App)一个进程,Service一个进程, 前台(App)和Service都在同一个应用包内.
3. AIDL
Messenger’s and AIDL’s are mainly used when your application needs to communicate to other processes(IPC). If, you want your Service to handle multiple requests simultaneously, then you can use AIDL directly.
In this case, your Service must be capable of multi-threading and be built thread-safe.
使用场景:
多个应用(独立进程)都在使用这个Service(独立进程).
4. ContentProvider
Database IPC access via ContentProvider.
使用场景:
跨进程的数据库访问.
5. Socket
LocalSocket.
使用场景:
Android里面的Binder就是,源码框架里面挺多的.