IPC

作者: _Felix__ | 来源:发表于2019-05-18 18:20 被阅读0次

    IPC是Inter-Process Communication的缩写,含义为进程间通信,是指两个进程之间进行数据交换的过程。
    在Android中主线程也叫UI线程,在UI线程里才能操作界面元素。(注意,不能在主线程中执行耗时操作,不然会出现ANR问题,即应用无响应)。
    在android中最具有特色的进程间通信方式就是Binder了,除此之外android还支持Socket。
    多进程的情况:

    • 自身原因。如通过多进程来获取多份内存空间。

    • 当前应用需要向其他应用获取数据时。

    在android中使用多进程只有一种方法,那就是通过android:process属性,开启多进程模式。(特殊情况,通过JNI在native层fork一个新的进程)

    在多进程模式中,不同进程的组件拥有独立的虚拟机,application以及内存.

    • 麻烦点:所有运行在不同进程中的四大组件,只要它们之间需要通过内存来贡献数据,都会共享失败
    • 静态成员和单列模式完全失效。
    • 线程同步机制完全失效。
    • sharedPreferences的可靠性下降
    • Application会多次创建

    先了解Serializable和Parcelable接口完成对象的序列化过程
    Serializable

    • 当实现java.io.Serializable接口的类没有显式地定义一个serialVersionUID变量时候,Java序列化机制会根据编译的Class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,如果Class文件(类名,方法明等)没有发生变化(增加空格,换行,增加注释等等),就算再编译多次,serialVersionUID也不会变化的。如果我们不希望通过编译来强制划分软件版本,即实现序列化接口的实体能够兼容先前版本,就需要显式地定义一个名为serialVersionUID,类型为long的变量,不修改这个变量值的序列化实体都可以相互进行串行化和反串行化。(一般都需要指定,不然改动都会导致系统重新计算当前类的hash值并把它赋值给serialVersionUID)
      Serializable.png
      如何实现序列化和反序列化呢?只需要采用ObjectOutputStreamObjectInputStream
      https://www.cnblogs.com/duanxz/p/3511695.html
      Parcelable
      Parcelable的方法说明.png

    相关文章

      网友评论

          本文标题:IPC

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