Android系统方面那些事AIDL

Android夸进程通信机制一:多进程简介

2019-03-29  本文已影响180人  IT前沿技术分享

Android夸进程通信机制系列:
Android夸进程通信机制一:多进程简介
Android夸进程通信机制二:Parcel 与 Parcelable
Android夸进程通信机制三:Messenger与Message
Android夸进程通信机制四:使用 Bundle进行进程间通信
Android夸进程通信机制五:使用文件共享进行进程间通信
Android夸进程通信机制六:使用ContentProvider进行进程间通信
Android夸进程通信机制七:使用 Socket进行进程间通信
Android夸进程通信机制八:使用 AIDL进行进程间通信
Android夸进程通信机制九:AIDL深入了解
...


一. 什么是多进程?

多进程就是多个进程的意思,那么什么是进程呢?

当一个Android应用在开始运行时,系统会为它创建一个进程,一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名。

进程的特点:

Android是支持多进程的,当我们需要时,可以利用多进程了,那么什么场景时候多进程呢

类似音乐类、跑步健身类、手机管家类等长时间需要在后台运行的应用,也就是常驻后台任务的应用。

这些应用的特点就是,当用户切到别的应用,或者关掉手机屏幕的时候,应用本身的核心模块还在正常运行,提供服务。如果因为手机内存过低,或者是进程重要性降低,导致应用被杀掉,后台服务停止,对于这些应用来说,就是灭顶之灾。合理利用多进程,将核心后台服务模块和其他UI模块进行分离,保证应用能更稳定的提供服务,从而提升用户体验。

二. 创建多进程

Android多进程创建很简单,只需要在AndroidManifest.xml的声明四大组件的标签中增加”android:process”属性即可。命名之后,就成了一个单独的进程。

process分私有进程和全局进程:

<service android:name="yb.demo.myProcesses.MusicService"
            android:process=":musicservice"/>
<service android:name="yb.demo.myProcesses.MusicService"
            android:process="yb.demo.myProcesses.musicservice"/>

为了节省系统内存,在退出该Activity的时候可以将其杀掉(如果没有人为杀掉该进程,在程序完全退出时该进程会被系统杀掉)。

三. 多进程间的通信

IPC:InterProcess Communication,即进程间通信。

我们知道,同一个进程的多个线程是共享该进程的所有资源,但多个进程间内存是不可见的,也就是说多个进程间内存是不共享的。那么进程间是如何进行通信的呢?

Android中,有多种方法可以实现进程间的通信,这里先放一个未完成的思维导图,后面细学的时候会完善此图。


Android跨进程通信方式.png

IPC的实现方式这里只做简单的介绍,后面会议专题的方式对各种方式进行深入的研究。

四、结语

IPC的方式多种多样,各有优势,至于要选择哪一种方式,需要根据实际情况,判断优劣,适当选择。

方式 优点 缺点 适用场景
Messenger 功能一般,支持一对多并发通信,支持实时通信 不能很好处理高并发情形,不支持RPC,数据通过Message进行传输,因此支持Bundle支持的数据类型 低并发一对多的即时通讯,无RPC需求,或无需返回结果的RPC需求
Bundle 简单易用 只能传输Bundle支持的数据类型 四大组件间的进程间通信
文件共享 简单易用 不适合高并发场景,并且无法做到进程间的即时通信 无并发访问情形,交互简单的数据,实时性不高的场景
Content Provider 在数据源访问方面功能强大,支持一对多并发数据共享,可以通过call方法扩展其他操作 可理解为受约束的AIDL,主要提供数据源的CRUD操作 一对多进程间的数据共享
Socket 功能强大,可以通过网络传输字节流,支持一对多并发实时通信 实现细节稍微有点繁琐,不支持直接的RPC 网络数据交换
AIDL 功能强大,支持一对多串行通信,支持实时通信 使用稍为复杂,需要处理好现场同步 一对多通信,并且有RPC需求的场景
上一篇下一篇

猜你喜欢

热点阅读