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

有关代理模式的知识,可以用下面这个思维导图来表示:
这里以一个代码实例来说明实际运用:
1、抽象类Role代码
 package com.magc.proxy;

 /**
* @author magc
*代理角色和真实角色的共同抽象类
*/
publicabstractclass Role { //作为代理角色和真实角色的共同接口,方便代理角色对外代替真实角色来提供服务
publicabstractvoid service(String user_id); }
2、真实角色类RealRole代码
 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;
} }
3、代理类ProxyRole代码:
 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("谢谢光临……");
} }
4、测试类RoleTest类代码
 package com.magc.proxy;

 /**
* @author magc
* 代理模式测试类
* 作为客户端去请求调用代理类的接口。
* 客户端只能访问代理类,而不能访问真实角色类
*/
publicclass ProxyTest { /**
* @param args
*/
publicstaticvoid main(String[] args) { ProxyRole proxy =new ProxyRole();
proxy.service("magc");
} }
运行测试类,控制台输出结果为:

理解Android系统的进程间通信原理(一)----RPC中的代理模式的更多相关文章

  1. 理解Android系统的进程间通信原理(二)----RPC机制

    理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI ...

  2. (转)Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  3. Android系统Recovery工作原理之使用update.zip升级过程分析(一)

    通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...

  4. Android 系统 root 破解原理分析 (续)

    上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会 ...

  5. Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...

  6. Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603       Android系统Recovery工作原理之使用update.zip ...

  7. Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465439  Android系统Recovery工作原理之使用update.zip升级过程分 ...

  8. Android系统Recovery工作原理

    Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作 http://blog.csdn.net/mu0206mu/article/d ...

  9. Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551  Android系统Recovery工作原理之使用update.zip升级过程分 ...

随机推荐

  1. Android问题-打开DelphiXE8与DelphiXE10新建一个空工程提示"out of memory"

    错误信息: [DCC Error] E2597 d:\XE8\Embarcadero\Studio\16.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-l ...

  2. POJ 3673 Cow Multiplication (水题)

    题意:给你两个数,求所有的数位的积的和. 析:太水了,没的说,可以先输入边算,也可以最后再算,一样.. 代码如下: #include <cstdio> #include <strin ...

  3. 利用CSS3实现页面淡入动画特效

    利用CSS3动画属性"@keyframes "可实现一些动态特效,具体语法和参数可以网上自行学习.这篇文章主要是实践应用一下这个动画属性,实现页面淡入特效,在火狐24版.chrom ...

  4. Java中的Filter过滤器

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  5. 转移部分博客到CSDN之中

    之前的文章一直发布在个人博客ivyxjc.xyz中, 现在将一部分博客移到csdn博客中.

  6. 蓝底白字到图形界面 主板BIOS发展简记

    本文转载:http://mb.zol.com.cn/229/2295738.html http://www.360doc.com/content/12/0306/14/1309227_19219857 ...

  7. 在Linux下怎么确定哪个网卡对应哪个接口?

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  8. C#-datagriview的表头高度的设置

  9. DynamoDB Local for Desktop Development

    Would you like to be able to write and test code that uses the Amazon DynamoDB API even if you have ...

  10. Codeforces Gym 100338I TV Show 傻逼DFS,傻逼题

    Problem I. TV ShowTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...