Android开发艺术探索--第二章IPC机制(3)之Android中的IPC方式

最近在拜读任主席的Android开发艺术探索,现在看了一半,再回头看前面的,感觉跟没有看一样,所以还是把知识点总结一下吧。前两节讲了一下IPC的基础知识,这一节来讲一下Android中的IPC方式。

Android中的IPC方式
  1. 使用Bundle:Bundle实现了Parcelable接口,Activity,Service和Receiver都支持通过在Intent中设置Bundle来传递数据
  2. 使用文件共享:这种方式适用于数据同步要求不高的进程间进行通信,并且需要处理并发读写的问题,需要注意,SharedPreferences比较特殊,由于系统对它的读写有一定的缓存策略,在内存中会有一份SharedPreferences文件的缓存,在多线程模式下,高并发的读写访问会有很大几率丢失数据,因此不建议在进程间通信中使用SharedPreferences
  3. 使用Messenger:Messenger是一种轻量级的IPC方案,它的底层实现是AIDL。Messenger是以串行的方式处理请求的,服务端只能一个一个处理,不存在并发执行的情形。
  4. AIDL:使用AIDL来进行进程间通信的流程,分为服务端和客户端两个方面,大致流程如下:
    服务端:首先新建一个Service用来监听客户端的连接请求,然后创建一个AIDL文件,将暴露给客户端的接口在这个AIDL文件中声明,最后在Service中实现这个AIDL接口即可。
    客户端:首先帮点服务端的Service,绑定成功后将服务端返回的Binder对象转成AIDL接口所属的类型,接着就可以调用AIDL中的方法了。

    • AIDL支持的数据类型:基本数据类型、String和CharSequence、ArrayList、HashMap、Parcelable以及AIDL;
    • 某些类即使和AIDL文件在同一个包中也要显式import进来;
    • AIDL中除了基本数据类,其他类型的参数都要标上方向:in、out或者inout;
    • AIDL接口中支持方法,不支持声明静态变量;
    • 为了方便AIDL的开发,建议把所有和AIDL相关的类和文件全部放入同一个包中,这样做的好处是,当客户端是另一个应用的时候,可以直接把整个包复制到客户端工程中。
    • RemoteCallbackList是系统专门提供的用于删除跨进程Listener的接口。RemoteCallbackList是一个泛型,支持管理任意的AIDL接口,因为所有的AIDL接口都继承自IInterface接口。
  5. 使用ConetentProvider

  6. 使用Socket
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值