进程间通信(IPC,InterProcess Communication)

**Activity(Intent), **
Broadcast(Intent),
Content Provider,
Service(AIDL,Android Interface Definition Language)

1)使用Bundle

示例文章:http://blog.csdn.net/yan8024/article/details/6444368
Bundle实现了Parcelable接口,Activity,Broadcast都支持在Intent中传递Bundle数据;

2)使用文件共享

SharedPreferences虽然是文件的一种,但是由于系统对它的读写有一定的缓存策略,即在内存中会有一份缓存,故在多进程,高并发的情况下,可能会丢失数据,所以不能用于进程间通信;

3)使用Messenger(Handle)

示例文章:http://blog.csdn.net/lmj623565791/article/details/47017485
Messenger是一种轻量级的IPC方案,它的底层实现是AIDL。Messenger是以串行的方式处理请求的,即服务端只能一个个处理,不存在并发执行的情况;

4)AIDL(Android Interface Definition Language,Android接口描述语言)

示例文章:http://liuxiangtian.github.io/2016/01/07/AIDL与Binder框架浅谈/
http://weishu.me/2016/01/12/binder-index-for-newer/
AIDL实现机制是Binder机制,AIDL常用于Service中进程间通信
当安卓需要实现跨进程通信时,通常采用AIDL接口。AIDL是一个安卓实现IPC机制的上层接口,是对Binder中间件的封装。简单的理解如下

AIDL=Binder+开发者自定义接口
AIDL就是Binder机制的一种应用,Binder是安卓实现IPC的一种机制,Binder机制使本地对象能够调用远程对象的方法,在不同进程中传递单向/双向消息。Binder使用C/S架构,分为服务端接口、Binder驱动、以及客户端接口三部分,客户端和服务端通过Binder驱动连接。客户端保存服务端的代理,负责初始化及等待服务端响应;服务端则保持一个线程池以做出响应;代理对象与binder驱动通信

5)Content Provider

Content Provider提供了一种在多个应用程序之间数据共享的方式(跨进程共享数据),一对多的情况,返回的是Cursor对象,AIDL返回的是Java对象

你可能感兴趣的:(进程间通信(IPC,InterProcess Communication))