Android的IPC方式

  1. 使用Bundle

    Bundle实现了Parcelable接口,Activity、Service和Receiver都支持在Intent中传递Bundle数据

  2. 使用文件共享

    这种方式简单,适合在对数据同步要求不高的进程之间进行通信,并且要妥善处理并发读写的问题,SharedPreferences是一个特例,虽然它也是文件的一种,但是由于系统对它的读写有一定的缓存策略,即在内存中会有一份SharedPreferences文件的缓存,因此在多进程模式下、系统对它的读写就变的不可靠,当面对高并发读写访问的时候,有很大几率会丢失,因此,不建议在进程间通信中使用SharedPreferences。

  3. 使用Messenger

    Messenger是一种轻量级的IPC方案,它的底层实现就是AIDL。Messenger是以串行的方式处理请求的,即服务端只能一个个处理,不存在并发执行的情形。

  4. 使用AIDL

大致流程:首先建一个Service和一个AIDL接口,接着创建一个类继承自AIDL接口中的Stub类中的抽象方法,在Service的onBind方法中返回这个类的对象,然后客户端就可以绑定服务端Service,建立连接后就可以访问远程服务端的方法了。

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

     1.ContentProvider主要以表格的形式来组织数据,并且可以包含多个表;  2.ContentProvider还支持文件数据,比如图片、视频等,系统提供的MediaStore就是文件类型的ContentProvider;  3.ContentProvider对底层的数据存储方式没有任何要求,可以是SQLite、文件,甚至是内存中的一个对象都行;  4.要观察ContentProvider中的数据变化情况,可以通过ContentResolver的registerContentObserver方法来注册观察者。
  2. 使用Socket
    套接字,分为流式套接字和用户数据报套接字两种,分别对应于网络的传输控制层中TCP和UDP协议。

    • TCP协议是面向连接的协议,提供稳定的双向通信功能,TCP连接的建立需要经过"三次握手"才能完成,为了提供稳定的数据传输功能,其本身提供了超时重传功能,因此具有很高的稳定性

    • UDP是无连接的,提供不稳定的单向通信功能,当然UDP也可以实现双向通信功能,在性能上,UDP具有更好的效率,其缺点是不保证数据能够正确传输,尤其是在网络拥塞的情况下

选用合适的IPC方式

更多相关文章

  1. AndroidStudio使用教程(第一弹)
  2. FileProvider无法获取外置SD卡问题解决方案 | Failed to find co
  3. MAC OS 下使用Android(安卓)Studio获取SHA1证书
  4. Android--把文件发送给另一个设备
  5. 详解Android系统中的root权限获得原理
  6. android apk 为程序增加代码混淆
  7. Android(安卓)Vold实现总览
  8. Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇
  9. Android(安卓)基于Http协议的文件上传

随机推荐

  1. android官方技术文档翻译——工具属性
  2. 穿针引线,帮你回忆, 汇总:Android系统启动流
  3. Android opencv(三) 边缘检测Sobel、Cann
  4. WindowsPhone下拉刷新控件 - PullRefresh
  5. Android中实现下载和解压zip文件功能代码
  6. Files to be needed by importing the an
  7. Android中dip(dp)和pix互相转化
  8. Android中通过getSystemService取得服务
  9. 【备忘】2016最新独家老罗Android视频教
  10. android webview 正常显示 Html中的 Fram