1. Android中进程和线程的关系,区别
-
进程是什么?
它是系统进行资源分配和调度的一个独立单位,也就是说进程是可以独立运行的一段程序。 -
线程又是什么?
线程进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自
己基本上不拥有系统资源。在运行时,只是暂用一些计数器、寄存器和栈 。
区别:
- 进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数
器为其执行上下文。 - 进程间相互独立,同一进程的各线程间共享。
- 进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互
斥手段的辅助,以保证数据的一致性。
2. 为何需要进行IPC,多进程通信可能会出现什么问题
为了保证进程空间不被其他进程破坏或干扰,Linux中的进程是相互独立或相互隔离的。在Android系统
中一个应用默认只有一个进程,每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当前
进程的内存和资源。这样导致在不同进程的四大组件没法进行通信,线程间没法做同步,静态变量和单
例也会失效。所以需要有一套IPC机制来解决进程间通信、数据传输的问题。
开启多进程虽简单,但会引发如下问题,必须引起注意:
- 静态成员和单例模式失效
- 线程同步机制失效
- SharedPref