android的IPC机制
来源:互联网 发布:魔兽世界6.0数据库 编辑:程序博客网 时间:2024/05/18 20:11
所谓的IPC机制就是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信。是指两个进程之间进行数据交换的过程。
进程与线程的区别:线程时CPU调度的最下单元,同时线程时一种有限的系统资源。而进程是一个执行单元,在PC和移动设备上是指一个程序或一个应用。一个进程可以包含多个线程也可以只有一个线程,即主线程。在android中的主线程也加UI线程,在UI线程里面才能操作界面元素。很多时候一个进程需要执行很多耗时操作,如果这些操作放在主线程中去执行的话就会造成界面无法响应,严重影响用户的体验,这种情况在PC系统和移动系统都存在,在android中有一个特殊的名字叫ANR,即Application Not Responding,应用无响应,解决这个问题就要用到线程,把一些耗时的操作放到线程中即可。
在android中比较有特色的进程间通信方式就是Binder了,通过Binder可以轻松实现进程间通信。除了Binder,android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然一个设备上的两个进程通过Socket通信自然也是可以的。
通过给四大组件指定android:process属性,可以在android中轻松开启多进程模式。
使用多进程会造成如下几个方面的问题:
1> 静态成员和单例模式完全失效
android为每个进程都分配了一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致了 在不同的虚拟机中访问同一个类对象会产生多份副本。
2> 线程同步机制完全失效
这个和第一个是类似的,不在一个内存里,不管是锁对象还是锁全局类都无法保证线程同步,因为不同进程锁 的不是同一个对象。
3> SharedPreferences的可靠性下降
因为SharePreferences不支持两个进程同时去执行写操作,否则会导致一定几率的数据丢失,这是因为 Sharepreferences底层是通过读写XML文件来实现的,并发写显然是可能出问题的,甚至并发读/写都有可能出 问题。
4> Application会多次创建
当一个组件跑到一个新的进程中的时候,由于系统要在创建新的进程同时分配独立的虚拟机,所以这个过程其 实就是启动一个应用的过程,因此会重新创建Application。
实现跨进程通信的方式有多种:
1、使用Intent来传递数据
2、共享文件和SharedPreferences
3、基于Binder的Messenger和AIDL
4、Socket等
- Android的IPC机制
- android的IPC机制
- Android的IPC机制
- Android的IPC机制
- Android的IPC机制
- Android的IPC机制
- Android 的 IPC 机制
- android的IPC机制
- Android的IPC机制
- Android的IPC机制
- Android的IPC机制-Binder
- android的IPC机制 - Binder
- Android的IPC机制Binder
- Android的IPC机制-Binder
- Android的IPC机制一
- Android的IPC机制二
- Android的IPC机制Binder
- 浅谈Android的IPC机制
- 阿里数据挖掘比赛总结
- 栈的顺序存储表示
- OC-2.方法
- SDCC 2015前端专场札记:Facebook、百度、腾讯、美团、饿了么等互联网公司的前端实战
- 初出茅庐
- android的IPC机制
- 角点检测harris corner公式推导详解
- CodeForces 602 A. Two Bases
- hibernate单向N-N关系映射
- 考试总结
- ZooKeeper3.4.6配置
- 当优秀成为了习惯,坚持又算的了什么?——英语活动
- nodejs学习1---基础知识
- JavaFX入门(一):我的第一个JavaFX程序