Android进阶学习第三天(一)IPC简介和Android中的多进程

IPC也就是Inter-Process Communication,含义是进程通信,是指两个进程之间进行数据交换的过程。

什么是线程?什么是进程?

线程是CUP调度的最小单元,是一种有限的系统资源,进程一般指一个执行单元,在PC或者移动端上一般指一个程序或者应用。进程与线程是包含关系。一个进程可以包含多个线程,但最低要有一条线程。即主线程(Android中的UI线程),很多时候,如果主线程执行大量耗时任务,就会造成界面无响应,Android 一般主线程阻塞超过5秒,则会报ANR异常。也就是应用无响应。

在任何操作系都中都需要有对应的IPC机制。

Android中IPC使用的场景基本有以下几种。

1,有些模块特殊需要放在单独进程的。

2,通过多进程获取多份内存空间。(Android对单个应用所使用的最大内存做了限制)

3,当前应用需要向其他应用获取数据。

 

 

Android中的多进程

四大组件在配置文件中(AndroidManifest.XML)中配置android:process属性,属性值就是进程的名字,其中以:开头的含义是指要在当前线程名头上加上包名。其次以:开头的进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一进程。不以:开头的进程属于全局进程,其他应用都可以通过ShareUID和它跑在同一进程。

多进程模式的运行机制

Android为每一个进程都分配了一个独立的虚拟机,不同的虚拟机在内存空间中的地址也不相同。导致同一个类多个进程访问,取得的数据不同。不同进程对静态变量的修改,对其他进程无效。

所有运行在不同进程的四大组件,只要通过内存进行共享数据,都会失败。

多进程带来了以下问题

1,静态成员和单例模式完全失效。

2,线程同步锁机制失效。这两点都要求在同一内存下,锁的也不是同一个对象。

3,SharedPreferences可靠性下降。底层通过读写XML文件实现,并发读写会一定几率导致数据丢失。

4,Application会多次创建,由于系统创建新的进程的同时分配独立虚拟机,其实也就是启动的过程。

在多进程中,不同的组件拥有独立的内存空间和虚拟机。

实现跨进程传递数据方法有很多

1,Intent传递数据。

2,共享文件和SharedPreferences(所有本地读写的方法 SQLite也可以)

3,基于Binder的Messenger和AIDL.

4,Socket

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值