Android学习笔记29——IPC机制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengxu_kuangrexintu/article/details/84310971

IPC机制简介

IPC是Inter-Process Communication的缩写,含义为多进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。这里又涉及到什么进程,什么是线程的理念了。

进程

进程,一般是指一个执行单元,在PC和移动设备上指一个程序或者一个应用。

线程

按照操作系统中的描述,线程是CPU调度最小的单元,同时线程是有限的系统资源。

进程和线程的关系

一个进程可以包含多个线程,因此进程和线程是包含和被包含的关系。举个例子,一个进程可以只有一个线程,即主线程,在Android里面主线程也叫UI线程,在UI线程中才能操作界面元素(或者是控件)。

ANR(应用无响应)

ANR图片
很多时候,一个进程中需要执行大量耗时任务,如果这些任务放在主线程中去执行就会造成界面无法响应,严重影响用户体验,这种情况在PC系统和移动系统中都存在,在Android中有一个特殊的名字叫做ANR(Application Not Responding),即应用无响应。
解决办法:这个问题就需要用到线程,把一些耗时的任务放到线程中执行。

Android的IPC机制

最开始提到IPC是跨进程通信或者多进程通信,但是IPC并不是Android独有的通信机制,那么Android的IPC机制是什么呢?

Android最有特色的进程间通信是Binder,通过Binder可以轻松实现进程间通信。除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然一个设备上的两个进程通过Socket通信自然也是可以的。

Android IPC机制使用场景:多进程

IPC机制是跨进程通信机制,那么它的使用场景就是多进程。多进程分为下面两种情况:

  1. 一个应用因为某些原因吱声需要采用多进程模式来实现,至于原因可能有很多,比如有些模块由于特殊原因需要运行在单独的进程中,又 或者为了加大一个应用可以使用的内存所以需要多进程获取多分内存空间。Android对单个应用使用的最大内存做了限制,早期的一些版本可能是16MB,不同的设备有不同的大小。
  2. 当前应用需要向其他应用获取数据,由于是两个应用,所以我们必须采用跨进程的方法来获取所需要的数据,甚至我们通过系统提供的ContentProvider去查询数据的时候,其实也是一种进程间通信,只是通信细节被系统内部屏蔽了,我们没有办法感知而已。

猜你喜欢

转载自blog.csdn.net/chengxu_kuangrexintu/article/details/84310971