1. 虽然Android是基于Linux的,但在Linux操作系统中的IPC技术在Android平台中被Binder Framework替代。Messenger、AIDL等进程间通信方式底层都是基于Binder的。
  2. Android中每个app都有独立的虚拟机,不同虚拟机在内存分配上有不同的地址空间,一般来说每个app都对应着一个进程,因此进程间通信不像线程间那样可以通过共享内存来实现。
  3. 进程间通信传递的数据,包括传入参数与返回值都需要实现android.os.Parcelable接口
  4. 有两种常用的序列化方式:Serializable——Java中的序列化方式,使用简单,开销较大,效率不是很高,比较适合磁盘序列化;Parcelable—— Android中的序列化方式,实现较为繁琐,效率较高,适合内存序列化,也是在Android开发中推荐使用的序列化方式。
  5. 常用的进程间通信方式有如下几种:<1>通过Intent在Activity、Service或BroadcastReceiver间进行进程间通信,可通过Intent传递数据<2>AIDL方式<3>Messenger方式<4>利用ContentProvider<5>Socket方式<6>基于文件共享的方式
  6. 由于远程方法可能是耗时的操作,因此请务必在客户端使用工作线程去执行RPC操作。除非你很清楚远端进程的操作是怎样的。 或者UI线程发起一个异步调用,通过callback来获取返回结果。如果从服务端调客户端的远程方法,如果也是耗时操作,同样需要开子线程。
  7. Messenger机制是单线程顺序执行的,容易实现,其实质是基于AIDL的。所能传递的数据类型为Message,跟线程间使用Message机制类似,但要注意对object参数的限制。
  8. 通过Binder框架实现进程间通信的原理示意(插图来自Efficient Android Threading):
  9. 通过AIDL进程间通信示意图(插图来自Efficient Android Threading):
  10. 使用Messenger进程间通信示意图(插图来自Efficient Android Threading):

更多相关文章

  1. Android(安卓)Zygote进程启动过程
  2. Android(安卓)不同手机分辨率适配(xml方式)
  3. HashMap 的 7 种遍历方式与性能分析!「修正篇」
  4. HashMap 的 7 种遍历方式与性能分析!(强烈推荐)
  5. nginx -s reload ?失败了
  6. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  7. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  8. (Android)View.getHeight或getWidth为0时的一些解决方案
  9. Android中使用OpenCV详细入门教程

随机推荐

  1. android自带样式 theme
  2. Android(安卓)theme
  3. Android自带主题样式
  4. Android系统自带样式(android:theme)(转)
  5. Android系统自带样式(android:theme)详解
  6. Android系统自带样式(android:theme)
  7. Android(安卓)系统自带样式Android:theme
  8. Android系统自带样式(android:theme)
  9. Android系统自带样式Android:theme
  10. Android技能树 — 屏幕适配小结