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类实现多进程通信

相关文章
|
2月前
|
存储 算法 Linux
C语言 多进程编程(一)进程创建
本文详细介绍了Linux系统中的进程管理。首先,文章解释了进程的概念及其特点,强调了进程作为操作系统中独立可调度实体的重要性。文章还深入讲解了Linux下的进程管理,包括如何获取进程ID、进程地址空间、虚拟地址与物理地址的区别,以及进程状态管理和优先级设置等内容。此外,还介绍了常用进程管理命令如`ps`、`top`、`pstree`和`kill`的使用方法。最后,文章讨论了进程的创建、退出和等待机制,并展示了如何通过`fork()`、`exec`家族函数以及`wait()`和`waitpid()`函数来管理和控制进程。此外,还介绍了守护进程的创建方法。
C语言 多进程编程(一)进程创建
|
2月前
|
Java Android开发 数据安全/隐私保护
Android中多进程通信有几种方式?需要注意哪些问题?
本文介绍了Android中的多进程通信(IPC),探讨了IPC的重要性及其实现方式,如Intent、Binder、AIDL等,并通过一个使用Binder机制的示例详细说明了其实现过程。
312 4
|
2月前
|
Linux C语言
C语言 多进程编程(四)定时器信号和子进程退出信号
本文详细介绍了Linux系统中的定时器信号及其相关函数。首先,文章解释了`SIGALRM`信号的作用及应用场景,包括计时器、超时重试和定时任务等。接着介绍了`alarm()`函数,展示了如何设置定时器以及其局限性。随后探讨了`setitimer()`函数,比较了它与`alarm()`的不同之处,包括定时器类型、精度和支持的定时器数量等方面。最后,文章讲解了子进程退出时如何利用`SIGCHLD`信号,提供了示例代码展示如何处理子进程退出信号,避免僵尸进程问题。
|
3月前
|
API Android开发
Android P 性能优化:创建APP进程白名单,杀死白名单之外的进程
本文介绍了在Android P系统中通过创建应用进程白名单并杀死白名单之外的进程来优化性能的方法,包括设置权限、获取运行中的APP列表、配置白名单以及在应用启动时杀死非白名单进程的代码实现。
62 1
|
3月前
|
Android开发 开发者 Kotlin
Android 多进程情况下判断应用是否处于前台或者后台
本文介绍在多进程环境下判断Android应用前后台状态的方法。通过`ActivityManager`和服务信息`RunningAppProcessInfo`可有效检测应用状态,优化资源使用。提供Kotlin代码示例,帮助开发者轻松集成。
268 8
|
3月前
|
消息中间件 存储 安全
python多进程并发编程之互斥锁与进程间的通信
python多进程并发编程之互斥锁与进程间的通信
|
4月前
|
安全 API Python
`multiprocessing`是Python的一个标准库,用于支持生成进程,并通过管道和队列、信号量、锁和条件变量等同步原语进行进程间通信(IPC)。
`multiprocessing`是Python的一个标准库,用于支持生成进程,并通过管道和队列、信号量、锁和条件变量等同步原语进行进程间通信(IPC)。
|
5月前
|
计算机视觉 Python
Python 多进程以及进程共享参数
这段时间在做一款游戏的挂机软件,我发现进入游戏后的逻辑和判断人物死亡的逻辑需要同时进行(因为不知道什么时候就暴毙了),以前我习惯用线程来进行同步,但是我发现由于我的代码中的逻辑比较复杂,且有多个嵌套的无限循环会导致线程阻塞,所以我决定用进程的方式来实现同步运行。
|
5月前
|
大数据 Linux Android开发
Android ParcelFileDescriptor实现进程间通信
Android ParcelFileDescriptor实现进程间通信
89 0
|
6月前
|
XML 前端开发 Android开发
Android架构设计——MVC(1),Android多进程从头讲到尾
Android架构设计——MVC(1),Android多进程从头讲到尾

相关实验场景

更多