[关闭]
@Awille 2021-10-21T15:22:07.000000Z 字数 2432 阅读 175

Android IPC机制

Android IPC


Binder机制好文章

1、Android 多进程模式

1.1、开启多进程模式

在Android中使用多进程只有一种方法,那就是给四大组件(Activity、Service、Receiver、ContentProvider)在AndroidMenifest中指定android:process属性,多进程可会造成一下几个方面的问题:
(1)静态成员和单例模式完全失效。
(2)线程同步机制完全失效。
(3)SharedPreferences的可靠性下降。
(4)Application会多次创建。

2、IPC 基础概念介绍

2.1、序列化

Serializable是Java中的序列化接口,其使用起来简单但是开销很大,序列化和反序列化过程需要大量I/O操作。而Parcelable是Android中的序列化方式,因此更适合用在Android平台上,它的缺点就是使用起来稍微麻烦点,但是它的效率很高,这是Android推荐的序列化方式,因此我们要首选Parcelable。

3、Binder概述

3.1、为什么要使用binder

Android 系统是基于 Linux 内核的,Linux 已经提供了管道、消息队列、共享内存和 Socket 等 IPC 机制。那为什么 Android 还要提供 Binder 来实现 IPC 呢?主要是基于性能、稳定性和安全性几方面的原因。

image.png-53.9kB

4、Linux下传统的进程间通信原理

4.1、基本概念介绍

image.png-53.2kB

当进程在执行用户自己的代码的时候,我们称其处于用户运行态(用户态)。此时处理器在特权级最低的(3级)用户代码中运行。

4.2、Linux下的传统IPC通信原理

image.png-100.1kB

传统IPC问题:

5、Binder跨进程通信原理

5.1、动态内核加载模块&&内存映射

一次完整的 Binder IPC 通信过程通常是这样:
image.png-135.5kB

6、Binder 通信模型

6.1、Client/Server/ServiceManager/驱动

image.png-130.2kB

其中 Client、Server、Service Manager 运行在用户空间,Binder 驱动运行在内核空间。其中 Service Manager 和 Binder 驱动由系统提供,而 Client、Server 由应用程序来实现。

6.2、Binder通信过程

image.png-96kB

6.3、Binder通信中的代理模式

image.png-75.6kB

7、AIDL源码分析

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注