美文网首页
笔记:IPC机制

笔记:IPC机制

作者: jiaming_ | 来源:发表于2017-10-23 09:25 被阅读20次

    IPC机制


    • IPC简介
      Inter-Process Communication 进程间通信/跨进程通信----指两个进程间进行数据交换的过程。
      Android中进程间通信的方式是通过Binder方式

    • Android开启多进程方式
    1. 给四大组件在AndroidManifest中指定android:process属性
    2. 通过JNI在native层fork一个新的进程(不常用)

    • 进程名以:开头的进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中,
    • 进程名不以:开头的进程属于全局进程,其他应用通过ShareUID的方式可以和它跑在同一个进程中,需要两个应用有相同的ShareUID和签名,这样他们就可以互相访问私有数据。

    • 多进程的问题
      一个静态变量,在不同进程中修改它的值,不会同步到其他进程中,每个进程只会持有该静态变量的副本。

    Android为每个应用分配一个独立的虚拟机,或者说每个进程分配一个独立的虚拟机,不同的虚拟机在内存地址分配上有独立的地址空间,这就会使在不同的虚拟机中访问同一个对象会产生多个副本

    多进程会带来的问题
    • 实现跨进程通信的方式举例:
      Intent传输数据,共享文件和sharedpreference,基于Binder的Messenger,AIDL和Socket

    • 序列化Serializable中有个SerialVersionUID,作用:该id被序列化到文件中,当反序列化时,会取出该id与当前类的id比较,如果不一样,表示类中的属性发生了变化,一般是编译器自己通过hash计算生成,如果手动指定,则修改类不会报错。
    1. 静态成员变量属于类,不属于变量,不会参与序列化
    2. 用transient标记的变量不参与序列化过程

    • Parcelable接口
      一个类只要实现该接口,就可以实现序列化并通过Intent和binder传递
    Parcelable
    • List Map也可以序列化,前提是内部元素可序列化

    • Parcelable主要用在内存序列化上

    • AIDL自动生成的java文件 p48

    • Binder的工作机制p50


      Binder的工作机制

    • 通过给Binder设置死亡代理,linkToDeath和unLinkToDeath p60

    • 各种AIDL实现的优缺点及使用场景

    相关文章

      网友评论

          本文标题:笔记:IPC机制

          本文链接:https://www.haomeiwen.com/subject/aeyouxtx.html