CrayfishXu

专注Android,填坑铺路

0%

IPC机制

最近想起IPC机制来,感觉还是有些会不记得,于是写下这篇文章,希望自己能牢牢的记住。

简介

IPC拼写是Inter-Process Communication。含义是进程间通信或者跨进程通信,通俗的说就是两个进程之间进行数据交换。

Android中的多进程模式

  • 如果设置多进程?
    设置多进程很简单,在AndroidManifest.xml的<activity>标签下加android:process,虽然设置很简单,但是涉及的东西缺很多。
    比如会造成一下几个问题
  1. 静态变量和单例模式完全失效
  2. 线程同步机制完全失效
  3. SharePreferences的可靠性下降
  4. Application多次被创建

    IPC机制概念

  • Serializable接口
    对象的序列化和反序列化。采用ObjectOutputStreamObjectInputStream将对象序列化到文件或者反序列化读取文件。

    1
    2
    3
    public class User implements Serializable{
    private static final long seriaVersionUID = 1L;
    }
  • Parcelable接口
    Parcel内部包装了可序列化数据,可通过Binder进行传输,在Android中进程间通信使用消耗更少。

  • IPC的几种方式

1.使用Bundle
大多数都是使用Intent传递Bundle数据,实现进程间通信。
2.使用文件共享
两个进程读写同一文件实现进程间通信。
3.使用Messenger
使用Messenger和Message进行进程间通信。
4.使用AIDL
远程调用服务跨进程通信。
5.使用ContentProvider
Android提供的专门用于不同应用进行数据共享的方式。
6.使用Socket
网络通信方式

  • Binder 连接池的使用
    通过BinderPool获取到不同类型的Binder,再进行调用。

注:后期增加IPC方式的代码。