安卓实现IPC(一)—— IPC概论

一、什么是IPC?
IPC是Inter-Process Communication的缩写,表示跨进程通信,在两个进程之间传递数据。
二、为什么会用到IPC?
IPC机制不是安卓系统独有的,其他系统也存在IPC。IPC是进程间的通信机制,进程一般指的是一个执行单元。在安卓中一些应用是单进程的,就是一个应用只有一个进程,但也有一些应用包含多个进程的,所以这其中就涉及到进程间数据的传递,这里就会用到IPC机制。为什么会用到IPC这个问题的本质就回到为什么会用到多进程,原因总结有以下两点:

1、安卓系统对单个进程的最大内存做了限制,有时为了应用获得更多的内存 ,可以开启更多的进程。除此之外,有些时候因为业务的需要,也需要单独开启一些进程来执行某些特定的任务;
2、有时一个安卓应用需要用到另一个安卓应用的数据,一个应用视为一个进程,此时就相当于是两个进程之间的数据传递。

三、安卓中单个应用内开启进程的方法?
在AndroidManifest.xml文件中注册四大组件的时候,添加属性android:process,添加了这个属性,组件就会运行在新开的进程中,这里有一点需要注意,就是在给新进程命名的时候,名称前面如果带有“:”,那么表明这个进程是当前应用私有的,不能运行其他应用的组件。
除此之外,还可以通过JNI在native层去fork一个新进程,这种方式以后再去深挖。
四、安卓中实现IPC的方式有哪些?
本文主要是介绍两个应用之间的通信,这里主要介绍四种可以实现IPC的方式:

1、用Intent实现IPC,主要是通过intent的隐式启动来打开其他应用的组件,intent中 放入需要传递的数据,以此达到跨进程通信的目的;
2、AIDL实现IPC,AIDL是Android Interface Definition Language的缩写,叫安卓接口定义语言,是一种服务端编写接口语言,接口供客户端调用。此种方式是典型的C/S模式,在Service端进行接口的定义,然后在Client端进行调用,中间靠service组件进行连接;
3、使用安卓系统提供的组件Broadcast,以发送全局广播的方式来实现跨进程通信;
4、使用ContentProvider加数据库的方式来实现跨进程通信,在服务端建立一个数据库,此时服务端和客户端共享一个数据库,通过增、删、查、改等操作对数据库进行操作,以此达到两个应用间数据的交互和进程间的通信 。

好了 ,本文是对安卓IPC的一个简单介绍,下面我将通过demo来具体学习安卓实现IPC的 四种方式。

安卓实现IPC(二)—— Intent

你可能感兴趣的:(安卓实现IPC(一)—— IPC概论)