第二章 ipc通信

ipc,便是inter process communication(进程间通信)

创建一个新的进程在安卓中只有两种方法,一种是四大组件在AndroidMenifest中间加入process参数,创建一个新的进程,而另一种便是通过c语言底层fook一个进程的。

对于新的进程,可以理解为一个新的独立的应用,因为每次在你创建一个新的进程的时候,对于底层实际上是系统又给应用分配一个新的jvm(java虚拟机),故这个新的进程相当于一个独立应用,拥有独立的存储空间,独立生命周期等等

在这里要注意,哪怕是一个相同的类,在另外一个进程访问这个类的时候,设计上是将这个类复制多一份放到自己堆栈空间中再去操作,所以哪怕一个进程对这个类做了任何操作,都不会对另外一个进程有半毛钱关系

举个例子,现在有一个公用类a

class a{
 private static String name="luo"
}

而一个应用中有两个进程,一个是主进程main,一个是新开进程theNew,假设theNew执行了这句代码

a.name="hua"
那么在主进程main和新开进程theNew分别将类a的name参数打印出来,你将会看到这样结果

main进程:a.name=luo
theNew进程:a.name=hua
看到了吗,操作同一个类,结果打印出来结果互不相同,theNew虽然对类a折行了赋值行为,可是实际上是对拷贝到自己内存的类a2执行赋值行为而已,对其他进程没有影响


所以,就是因为这个原因,所以提出了进程间通信的需求


在安卓中,进程间通信主要有几种

1 共享文件

2 AIDL

3 messenger

4 intent

5 contentprovider

6 socket

其中 messenger也属于aidl,底层就是封装好的aidl

而说到进程间通信,就不得不说到binder

Binder是Android系统中进程间通讯(IPC)的一种方式,也是Android系统中最重要的特性之一。Android中的四大组件Activity,Service,Broadcast,ContentProvider,不同的App等都运行在不同的进程中,它是这些进程间通讯的桥梁。正如其名“粘合剂”一样,它把系统中各个组件粘合到了一起,是各个组件的桥梁。

其中Aidl进程通信方式可以参考这个:aidl实例分析

messenger可以参考这个:messenger实例分析

socket可以参考这个:socket实例分析

contentprovider可以参考这个:contentprovider实例分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值