【Android 学习】IPC机制(一)Android IPC简介及多进程模式

来源:互联网 发布:灰原哀 知乎 编辑:程序博客网 时间:2024/05/16 14:58
这几篇博客都是,最近看任玉刚的《Android 开发艺术与探索》第二章的读书笔记,看这章看了好几遍,总算是对Android IPC机制有了一定的理解。

一、什么是Android  IPC

   IPC 是Inter-Process Communication 的缩写,含义是进程间通信或者跨进程通信,故名思意:就是指两个进程之间的通信,也就是数据的交换。
这里先普及一个老生常谈的问题:就是什么是进程?进程与线程有什么区别?
进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
一个程序至少有一个进程,一个进程至少有一个线程.
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
在Android中主线程也叫UI线程,如果我们将大量的耗时操作放在主线程中去执行,很可能造成ANR(Application Not Responsing)即应用无响应。解决这个问题的办法是将这些耗时操作放在子线程中去执行。
IPC 不是Android 独有的,任何一个操作系统都有IPC,如Windows 的剪切板等。Linux上有命名管道、共享内存和信号量机制。Android IPC通信方式有Bundle、文件共享、Messenger、AIDL、ContentProvider、Socket。还有一个就是
Android 特有的通信方式Binder。

二、Android中的多进程模式

 Android  多进程就是一个Android APP中有多个进程在同时运行,一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名,进程是系统分配资源和调度的基本单位,每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当前进程的内存和资源,系统给每个进程分配的内存会有限制。
开启Android  多进程的方法只有一个,那就是在Androidmanifest.xml文件中添加android:process属性即可。
我们知道不同进程不能共享内存,所以多进程会使运行在不同进程的Android四大组件,只要通过共享内存来共享数据实现通信,都会失效。
主要带来一下几个方面的问题:
  1. 静态成员和单例模式完全失效。
  2. 线程同步机制完全失效。
  3. SharedPreferences的可靠性下降。
  4. Application会多次创建(Application 多进程相当于应用重启)。


1 0