复习:IPC机制
一、为什么需要IPC机制
当我们开启多个进程的时候,我们有时需要和各个进程进行交互。但是进程间的交互就不能够共享对象(就是进程A中创建了一个对象,进程B中的类或者方法不能够直接使用,需要用到IPC机制),不能共享是规定,一个对象只能被一个进程使用。
问:那么为什么需要多进程呢?
Android下的多进程机制:
1、如何创建多进程 小技巧:①、关于进程的命名
2、多进程模式的运行过程
①、JVM 与内存
3、多进程遇到的问题
①、无法共享内存地址的问题 ②、创建JVM的问题
二、如何使用IPC机制
1、Serializable接口
①、作用 ②、机制 ③、使用 ④、小技巧 ⑤、反序列化不成功的问题
问:当User类存在未序列化的引用类型的参数,是否序列化成功
public User implements Serializable{
private String mName;
private String mPsd;
//存在非引用类型的成员变量的时候,反序列化能否成功,该Book类未序列化,与已序列化的情况
private Book book;
}
User
当Book类,未继承Serializable接口的时候,序列化失败。
当Book类,继承接口的时候,序列化成功。
2、Parcelable接口
①、作用 ②、机制 ③、使用 ④、与Serializable的区别
3、跨进程调用
①、AIDL
当一个进程想要暴露给另一个进程访问时,就必须定义这种通信的合约;
Binder:是进程通信的工具
②、IPC机制的流程 弄懂各个方法的作用和工作流程
③、当Service死亡重启的方法
④、如何使用
注意事项:①、Binder线程池与UI线程的切换 ②、线程池无法进行耗时长的工作
③、RemoteCallBack原理:因为返回的数据是经过Parcelable序列化返回的,但是他们的IBinder是不变的,RemoteCallBack保留IBinder,实现解注册
⑤、跨进程通信的其他方法。 1、五种方式 2、各个的优点 3、各个的原理是什么
⑥、服务端调用客户端方法的原理
⑦、当进程死亡时,如何自动重新注册
4、权限验证
①、使用permission (Android permission用法)
在ServiceA利用permission标签设定权限,当B端需要使用ServiceA时候,必须声明A制定的权限。 之后还需要在Service判断,B端调用ServiceA的时候,是否声明了权限,权限验证这是在SerivceA中判断的。
②、在onTransact()方法中
获取调用服务端的客户端的各种信息,指定只有客户端具有特定信息的才可使用(比如,包名以com.chen开头的客户端才能使用)
复习:IPC机制的更多相关文章
- Anciroid的IPC机制-Binder概述
在Linux系统中,是以进程为单位分配和管理资源的.出于保护机制,一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭.但是,在一个复杂的应用系统中,通常会使用多个相关的进程来共同完成一项 ...
- Handler消息机制与Binder IPC机制完全解析
1.Handler消息机制 序列 文章 0 Android消息机制-Handler(framework篇) 1 Android消息机制-Handler(native篇) 2 Android消息机制-H ...
- ndk学习15: IPC机制
Linux IPC机制 来自为知笔记(Wiz)
- Android之IPC机制
Android IPC简介 任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道.共享内存.信号量等来进行进程间通信.Android系统不仅可以使用了Binder机制来实现IPC,还 ...
- IPC机制--Binder
文章来自 Android技术内幕 系统卷 转:http://www.linuxidc.com/Linux/2011-08/40508.htm 什么是IPC机制以及IPC机制的种类 在Linux中,是以 ...
- IPC机制
转:http://blog.chinaunix.net/uid-26125381-id-3206237.html IPC 三种通信机制 2012-05-13 17:23:55 最近看了,IPC三种通 ...
- IPC 机制简介
IPC 机制简介 概述 在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同.前者对Un ...
- pipe()管道最基本的IPC机制
<h4>进程间通信 fork pipe pie_t 等用法(管道机制 通信)</h4>每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之 ...
- Android的IPC机制(一)——AIDL的使用
综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互.不同的操作系统都有他们自己的一套IPC机制.例如在Linux操作系统中可以通过管道. ...
随机推荐
- DOM 对象之 document.all
1.document.all是页面内所有元素的一个集合: 2.经测试在chrome,safari,opera,ie中均返回一个HTMLALLCollection[xx]对象,在FF中返回是一个unde ...
- JQuery easyui (2)Droppable(放置)组件
所谓放置,就是将一个物体放入一个物体内,当然对于easyui来说触发各种效果是必不可少的,同时这个组件也不会依赖于其他组件. Droppable的加载方式 1,class 加载 一直不太喜欢cl ...
- Js 导出Excel IE ActiveX控件
function ExportExcel() { var oXL = new ActiveXObject("Excel.Application"); //创建excel应用程序对象 ...
- (转)set集合的应用
set集合的应用 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), diffe ...
- [C++程序设计]变量的存储类别
全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些空间.在程序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放. 在动态存储区中存放以下数据: ...
- Ubunu下安装mongoDB
mongoDB有两种安装模式: 1. 源码安装 wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.0.tgz tar zxvf ...
- python3.4 伪装成浏览器获取页面信息失败
最近学了下网络爬虫,打算从一个网站上提取点东西,自己练练手,刚开始还从这个网站上取了正确的html,后来百般尝试还是不能取正确的html,希望能得到大家的帮助~ 我刚开始的代码是: 1 url=&qu ...
- postgresql赋予/撤消 用户权限
(1)给予权限:grant grant select on 表名 to 用户名: (2)撤消权限:revoke revoke select on 表名 from ...
- HDU 2266 How Many Equations Can You Find(DFS)
How Many Equations Can You Find Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- SVN的错误: working copy locked
提示:your working copy appears to be locked. run cleanup to amend the situation. 产生这种情况大多是因为上次svn命令执行失 ...