Android开启多进程及进程间通信的几种方式

简介: 开启多进程及进程间通信的几种方式
  • 进程

首先来看进程的定义: 进程是指一个执行单元,在PC和移动设备上是指一个程序或者一个应用。而线程是CPU调度的最小单元,同时线程是一种有限的系统资源,一个进程可以包含多个线程,因此进程和线程是包含与被包含的关系,当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。

  • 开启多进程

多进程的好处:
1、增大应用的可使用内存,Android对应用的最大内存内存做了限制,开启多进程可以申请到多块内存,应用中内存消耗比较大的模块,可以考虑新开一个进程。
2、多进程可以防止整个程序崩溃,假如新开的进程崩溃了,那么会返回到主进程中,而不会导致整个程序崩溃。
如果客户端和服务端不再同一个应用,默认就是两个进程;如果在一个应用内开启多进程,在AndroidManifest.xml文件中的四大组件   和  均支持 android:process属性来开启多进程。通过设置此属性,可以使每个组件均在各自的进程中运行,或者使一些组件共享一个进程,而其他组件则不共享。Android默认进程名是即是包名。
android:process的设置有两种:
1、android:process="xxx.xxx.xxxx.remote" 完整的命名方式,属于全局进程,其它应用通过ShareUID方式可以和它跑在同一个进程中。
2、android:process=":remote",“:”的含义是要在当前进程名前面加上包名,进程名以“:”开头是属于私有进程,其他应用不可访问。

  • 多进程带来的问题

(1).静态成员和单例模式完全失效
(2).线程同步机制完全失效
(3).SharedPreference的可靠性下降
(4).Application会多次创建

  • 进程间通信

IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。进程间通信的几种方式:Intent传递数据,文件共享,Messenger,AIDL,ContentProvider,Socket等。
1、Intent 只能传递简单的对象,对象必须实现Pacelable接口序列化,使用例子:多进程通信之Intent
2、Messenger基于消息(Message)实现进程间通信,服务端是串行执行客户端请求的,底层实现是AIDL,详细请看:进程间通信之Messenger
3、允许不同应用的客户端用 IPC 方式访问服务,并且可以在服务端处理多线程,详细请看:进程间通信之AIDL
4、进程间通信还可以通过继承Binder来实现,详细请看:继承Binder类实现多进程通信

相关文章
|
3月前
|
Linux Shell
【Linux 进程间通讯 管道】使用Linux管道进行linux进程间通信
【Linux 进程间通讯 管道】使用Linux管道进行linux进程间通信
51 1
|
11天前
|
Android开发 开发者 Kotlin
Android 多进程情况下判断应用是否处于前台或者后台
本文介绍在多进程环境下判断Android应用前后台状态的方法。通过`ActivityManager`和服务信息`RunningAppProcessInfo`可有效检测应用状态,优化资源使用。提供Kotlin代码示例,帮助开发者轻松集成。
65 8
|
1月前
|
安全 API Python
`multiprocessing`是Python的一个标准库,用于支持生成进程,并通过管道和队列、信号量、锁和条件变量等同步原语进行进程间通信(IPC)。
`multiprocessing`是Python的一个标准库,用于支持生成进程,并通过管道和队列、信号量、锁和条件变量等同步原语进行进程间通信(IPC)。
|
2月前
|
计算机视觉 Python
Python 多进程以及进程共享参数
这段时间在做一款游戏的挂机软件,我发现进入游戏后的逻辑和判断人物死亡的逻辑需要同时进行(因为不知道什么时候就暴毙了),以前我习惯用线程来进行同步,但是我发现由于我的代码中的逻辑比较复杂,且有多个嵌套的无限循环会导致线程阻塞,所以我决定用进程的方式来实现同步运行。
|
2月前
|
大数据 Linux Android开发
Android ParcelFileDescriptor实现进程间通信
Android ParcelFileDescriptor实现进程间通信
36 0
|
3月前
|
消息中间件 Linux
【linux进程间通信(二)】共享内存详解以及进程互斥概念
【linux进程间通信(二)】共享内存详解以及进程互斥概念
|
3月前
|
XML 前端开发 Android开发
Android架构设计——MVC(1),Android多进程从头讲到尾
Android架构设计——MVC(1),Android多进程从头讲到尾
|
3月前
|
消息中间件 Linux API
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
110 1
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
|
3月前
|
消息中间件 Unix Linux
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
55 0
|
3月前
|
消息中间件 数据采集 网络协议
谈谈嵌入式系统中多进程设计与进程通信
谈谈嵌入式系统中多进程设计与进程通信
44 0
谈谈嵌入式系统中多进程设计与进程通信