021 Android多进程-综述

2021-01-19  本文已影响0人  凤邪摩羯

022 Android多进程-序列化-Serializable和Parcelable
023 Android多进程-序列化-ProtocolBuffer
024 Android多进程-Messenger与Message
025 Android多进程-Bundle
026 Android多进程-文件共享
027 Android多进程-ContentProvider
028 Android多进程-Socket
029 Android多进程-AIDL-使用
029 Android多进程-AIDL-原理
029 Android多进程-Binder连接池
030 Android多进程-Binder-综述-1
030 Android多进程-Binder-综述-2
030 Android多进程-Binder-为什么用Binder1
030 Android多进程-Binder-为什么用Binder2
031 Android多进程-ps进程命令
032 Android多进程-进程状态的切换
032 Android多进程-进程生命周期
033 Android多进程-进程优先级ADJ算法
034 Android多进程-共享内存

一. 什么是多进程?

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

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

image

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

四、结语

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

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

猜你喜欢

热点阅读