复习: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操作系统中可以通过管道. ...
随机推荐
- [ofbiz]设置任务计划(job),提示service_item已经传递
问题描述:设置任务计划(job),提示service_item已经传递 解决办法: 红色框内不要填写,就可以了."已经传递"是翻译的不准确,应该是"已过时",所 ...
- 设置secureCRT中vim的字体颜色
1.在/etc/vimrc新增以下一行 syntax on 注:上述方法对root用户无效,原因为在一般用户中,alias vi=vim,而在root用户中默认无此设置,因此若需要root用户也显示颜 ...
- jquery append 动态添加的元素事件on 不起作用问题的解决
on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delete). 不多说看成功代码(注意加粗加色): <!DOCTYPE html PUBLIC "-//W ...
- ajax创建对象
<script> function createAjax(){ var request=false; //window对象中有X ...
- python之第一个例子hello world
python用缩进(四个空格,不是teble)来区分代码块 1. coding=utf-8 字符编码,支持汉字 #!/usr/bin/env python# coding=utf-8print ...
- 玩sdr的朋友们,在rtl_tcp时,记得调整rtl_AGC和tuner_AGC啊
我在rtl_tcp时没有调整这个,结果怎么也听不到声音啊 还有就是在搞rtl_tcp时,一定要网速跟得上,我用无线网络时就碰到了这个问题,声音总是一直断续着,郁闷死
- Java 学习 第三篇;面向对象
1:Java的常用包: 核心类在java 包中:扩展类在javax包中 java.lang 系统默认自动导入 包含String Math System Thread等类 java.util 包含了工具 ...
- TENX_ASM.uew
/L14"TENX ASM" Nocase Line Comment = ; File Extensions = INC ASM LST H /Colors = ,,,,, /Co ...
- C# 如何查看源程序的IL代码
1.打开microsoft visual studio 2008 / visual studio tools / visual studio 2008 命令提示 ,并输入ilda ...
- 【Razor语法规则小手册....】
在经过长达半年的Windows开发后,Razor的一些语法有些生疏了.搜集些,再熟悉下.呵呵,甚是怀念以前做web 项目的时候,基于动软代码生成器自定义T4模板,后来vs2010后开始支持T4模板. ...