Android进程间通信纪要

来源:互联网 发布:淘宝旧版本安卓 编辑:程序博客网 时间:2024/04/28 09:27
  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):
    这里写图片描述
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 头发两天就油了怎么办 头发被剪的很丑怎么办 美发师年龄大了怎么办 青春期头发掉的厉害怎么办 剪了短发头发翘怎么办 4个月婴儿咳嗽怎么办 2个月婴儿咳嗽怎么办 5个月婴儿咳嗽怎么办 烫的内扣睡觉怎么办 站了一天腿疼怎么办 头发被剪得很丑怎么办 淹脖子破皮了怎么办 孩子胖脖子淹了怎么办 宝宝屁股破皮了怎么办 新生儿屁屁发红及烂怎么办 头发烫完太蓬松怎么办 头发烫的太卷了怎么办 烫了卷发很毛躁怎么办 烫发后头发干枯毛躁怎么办 烫完头发掉发怎么办 烫发掉发严重该怎么办 烫头发后掉头发怎么办 烫过头发后毛躁怎么办 烫了头发像大妈怎么办 头发烫了之后很毛躁怎么办 鳄龟爪子烂了怎么办 乌龟壳边缘烂了怎么办 乌龟拉绿色的水怎么办 小乌龟龟壳变软怎么办 鳄龟不待在水里怎么办 脖子整天黏黏的怎么办 有脊椎侧弯跳舞怎么办 落枕10天还不好怎么办 落枕十几天没好怎么办 肩一边高一边低怎么办 35岁无稳定工作怎么办 机械手表走的快怎么办 机械表发条紧了怎么办 两只乌龟互相咬怎么办? 乌龟鼻子摔烂了怎么办 剃刀龟脖子肿了怎么办