理解Android系统的进程间通信原理(一)----RPC中的代理模式
Android系统中的进程间通信是通过一个轻量级的RPC(Remote Procedure Call远程进程调用)和AIDL(Android Interface Definination Language)规范来生成两个进程之间可以相互访问的代码。其中RPC是以接口方式来实现,客户端与被调用实现之间是通过代理模式来实现的,这些又是以JAVA的RMI和代理模式为理论基础的,若要灵活掌握这个轻量级的解决方案,有必要重新理顺这些基础知识的,这里我们先了解代理模式的相关基础,

package com.magc.proxy; /**
* @author magc
*代理角色和真实角色的共同抽象类
*/
publicabstractclass Role { //作为代理角色和真实角色的共同接口,方便代理角色对外代替真实角色来提供服务
publicabstractvoid service(String user_id); }
package com.magc.proxy; /**
* @author magc
* 真实角色类
* 对外是不可访问
*
*/
publicclass RealRole extends Role { /* (non-Javadoc)
* @see com.magc.proxy.Role#service()
* 提供服务
*/
@Override
publicvoid service(String user_id) {
System.out.println("真实角色为你服务……");
}
//验证用户身份
publicboolean CheckUser(String user_id)
{
returntrue;
} }
package com.magc.proxy; /**
* @author magc
* 代理角色类
* 对客户端开发其接口
* 内部可以直接引用真实角色实例,将客户端的请求转给真实角色实例
* 对转发请求的前或者后面可以增加一些额外操作
*/
publicclass ProxyRole extends Role {
private RealRole realrole =null; /* (non-Javadoc)
* @see com.magc.proxy.Role#service()
*/
@Override
publicvoid service(String user_id) {
System.out.println("代理角色为你服务……");
//需要时才去创建真实角色实例
realrole =new RealRole();
//增加额外操作:验证身份
System.out.println("验证身份……");
if(!realrole.CheckUser(user_id))
return;
System.out.println("去找真实角色实例帮忙处理事务……");
realrole.service("magc"); System.out.println("谢谢光临……");
} }
package com.magc.proxy; /**
* @author magc
* 代理模式测试类
* 作为客户端去请求调用代理类的接口。
* 客户端只能访问代理类,而不能访问真实角色类
*/
publicclass ProxyTest { /**
* @param args
*/
publicstaticvoid main(String[] args) { ProxyRole proxy =new ProxyRole();
proxy.service("magc");
} }

理解Android系统的进程间通信原理(一)----RPC中的代理模式的更多相关文章
- 理解Android系统的进程间通信原理(二)----RPC机制
理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI ...
- (转)Android 系统 root 破解原理分析
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)
通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...
- Android 系统 root 破解原理分析 (续)
上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603 Android系统Recovery工作原理之使用update.zip ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465439 Android系统Recovery工作原理之使用update.zip升级过程分 ...
- Android系统Recovery工作原理
Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作 http://blog.csdn.net/mu0206mu/article/d ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551 Android系统Recovery工作原理之使用update.zip升级过程分 ...
随机推荐
- red5下nginx安装配置
http://zfl110.iteye.com/blog/1155149 原址:http://lqw.iteye.com/blog/652763 安装Nginx 1.首先安装pcre-8.02.tar ...
- C#简单应用spring的例子
接口定义 namespace SpringDemo { interface IOper { void Say(); } } 此接口的两个实现 实现1 using System; namespace S ...
- 通过源码学Java基础:InputStream、OutputStream、FileInputStream和FileOutputStream
1. InputStream 1.1 说明 InputStream是一个抽象类,具体来讲: This abstract class is the superclass of all classes r ...
- poj 3268 Silver Cow Party(最短路)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17017 Accepted: 7767 ...
- HDU2066一个人的旅行(dijkstra)
一开始拿到这个题感觉floyd可能会超,还是写了写,果然1WA+1TLE,之后觉得用dijkstra试试看看S和D会不会比较小,还是1WA+1TLE,最后还是借鉴了别人的做法. 把他的家作为起点,与他 ...
- POJ1061青蛙的约会(扩展欧几里得)
#include <cstdio> #include <cstring> #include <algorithm> #include <math.h> ...
- 使用 DllImport 属性
本主题说明 DllImport 属性的常见用法.第一节讨论使用 DllImport 从托管应用程序调用本机代码的优点.第二节集中讨论封送处理和 DllImport 属性的各个方面. 从托管应用程序调用 ...
- Java学习笔记(二):String
String 在Java中String是作为引用对象存在的一种数据类型,用来保存字符串. 实例化和赋值 //直接声明 String s1 = "Hello world!"; //通 ...
- st_Alarm_GenAlarmDealTime
USE [ChiefmesNew]GO/****** Object: StoredProcedure [dbo].[st_Alarm_GenAlarmDealTime] Script Date: 04 ...
- disque概要
做项目过程接触到disque,记录一下. disque是redis之父开源的基于内存的分布式作业队列,用c语言实现的非阻塞网络服务器. disque的设计目标:Its goal is to captu ...