理解Android系统的进程间通信原理(一)----RPC中的代理模式

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

有关代理模式的知识,可以用下面这个思维导图来表示:

这里以一个代码实例来说明实际运用:

1、抽象类Role代码

 1 package com.magc.proxy; 2  3 /** 4  * @author magc 5  *代理角色和真实角色的共同抽象类 6  */ 7 public abstract class Role { 8      9     //作为代理角色和真实角色的共同接口,方便代理角色对外代替真实角色来提供服务10     public abstract void service(String user_id);11 12 }

2、真实角色类RealRole代码

 1 package com.magc.proxy; 2  3 /** 4  * @author magc 5  * 真实角色类 6  * 对外是不可访问 7  *  8  */ 9 public class RealRole extends Role {10 11     /* (non-Javadoc)12      * @see com.magc.proxy.Role#service()13      * 提供服务14      */15     @Override16     public void service(String user_id) {17         System.out.println("真实角色为你服务……");18     }19     //验证用户身份20     public boolean CheckUser(String user_id)21     {22         return true;23     }24 25 }

3、代理类ProxyRole代码:

 1 package com.magc.proxy; 2  3 /** 4  * @author magc 5  *    代理角色类 6  *    对客户端开发其接口 7  *    内部可以直接引用真实角色实例,将客户端的请求转给真实角色实例 8  *    对转发请求的前或者后面可以增加一些额外操作 9  */10 public class ProxyRole extends Role {11     private RealRole realrole = null;12 13     /* (non-Javadoc)14      * @see com.magc.proxy.Role#service()15      */16     @Override17     public void service(String user_id) {18         System.out.println("代理角色为你服务……");19         //需要时才去创建真实角色实例20         realrole = new RealRole();21         //增加额外操作:验证身份22         System.out.println("验证身份……");23         if(!realrole.CheckUser(user_id))24             return;25         System.out.println("去找真实角色实例帮忙处理事务……");26         realrole.service("magc");27         28         System.out.println("谢谢光临……");29     }30 31 }

4、测试类RoleTest类代码

 1 package com.magc.proxy; 2  3 /** 4  * @author magc 5  *    代理模式测试类 6  *    作为客户端去请求调用代理类的接口。 7  *    客户端只能访问代理类,而不能访问真实角色类 8  */ 9 public class ProxyTest {10 11     /**12      * @param args13      */14     public static void main(String[] args) {15 16         ProxyRole proxy = new ProxyRole();17         proxy.service("magc");18     }19 20 }

运行测试类,控制台输出结果为:

由于时间仓促,错误难免,希望能给大家有所启示,也算是在这里抛砖引玉了,呵呵

时间: 2024-10-09 15:33:08

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

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

理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI的相关知识,可以通过下图来归纳: Android中的RPC也是参考了JAVA中的RMI方案,这里我们再详细了解一下RPC的实现过程. Android中的RPC机制是为了实现一个进程使用另一个进程中的远程对象,它使用了Android自己的AIDL(接口定义语言),使用户很方便地定义出一个接口作为规范,

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

通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动模式分析,Recovery工作原理,如何从我们上层开始选择system update到重启到Recovery服务,以及在Recovery服务中具体怎样处理update.zip包升级的,我们的安装脚本updater-script怎样被解析并执行的等一系列问题.分析过程中所用的Android源码是gin

理解Android系统(一)

理解Android系统 Android 是业界流行的开源移动平台,受到广泛关注并为多个手机制造商作为手机的操作系统平台.由于它的开放性,市面上又出现了它的很多改良定制版本.且广泛的应用在手机.汽车.电脑等领域.因此,研究其安全架构及权限控制机制具有非常的重要性. 本章从 Android 层次化安全架构入手,详细地介绍 Android 平台的安全架构及其权限控制机制,涵盖 Android 应用程序权限申请方法等,并从源代码实现层面来解析该机制. 1.1 系统的层级架构 Android架构,其实就是

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

本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465439  Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节            Recovery服务毫无疑问是Recovery启动模式中最核心的部分.它完成Recovery模式所有的工作.Recovery程序对应的源码文件位于:/gingerbread0919/bootable/recovery/recovery

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

目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本来看其中主要涉及的语法. 1.assert(condition):如果condition参数的计算结果为False,则停止脚本执行,否则继续执行脚本. 2.show_progress(frac,sec):frac表示进度完成的数值,sec表示整个过程的总秒数.主要用与显示UI上的进度条. 3.for

转 理解Android系统Binder机制

一.Binder机制概述 在Android开发中,很多时候我们需要用到进程间通信,所谓进程间通信,实现进程间通信的机制有很多种,比如说socket.pipe等,Android中进程间通信的方式主要有三种: 1.标准Linux Kernel IPC 接口: 2.标准D-BUS接口: 3.Binder接口. 其中,Binder机制是使用最且最被认可的,因为Binder机制有以下优点: 1.相对于其它IPC机制,Binder机制更加简洁和快速: 2.消耗的内存相对更少: 3.传统的IPC机制可能会增加

(转 )【Android那些高逼格的写法】InvocationHandler与代理模式

转自这个公众号: 今天会聊一下InvocationHandler.说到InvocationHandler不得不提到的就是代理模式,什么是代理模式,举个例子,你玩游戏,花钱请个代练,代练其实是登录你的账号,假装是你帮你升级打怪.再比如买房,你需要委托中介帮你去处理一些事,中介在办理这些事的时候,实际是使用你的身份证,身份信息去办理的. 代理模式也是一样,比如有一个类,有一个方法是压缩图片的.现在你突然需要,在这个方法之前去做一些操作,比如就是打个log吧,压缩之后再打个log. 可能你会想,那直接

《深入理解Android内核设计思想》

<深入理解Android内核设计思想> 基本信息 作者: 林学森 出版社:人民邮电出版社 ISBN:9787115348418 上架时间:2014-4-25 出版日期:2014 年5月 开本:16开 页码:687 版次:1-1 所属分类:计算机 > 软件与程序设计 > 移动开发 > Android 更多关于>>><深入理解Android内核设计思想> 编辑推荐 基于Android SDK最新版本 全面细致地剖析了进程/线程模型.内存管理.Bind

【转】Android系统概览

这篇文章其实原文叫 <老罗的Android之旅>导读PPT 是罗升阳的博客,我觉得用“Android系统概览”作为标题更贴切些,对于在应用层已经开发了一段时间的人来说,读完之后会有很多体会,对初学者来说意义不大. 虽然好几个月没更新博客了,但是老罗一直有在准备可以分享的东西的.除了早前在微博分享Android4.2相关技术之外,这次还特意准备了13个PPT,总结之前所研究过的东西.内容从Android组件设计思想,到Android源码开发和调试环境搭建,再到Android专用驱动和应用程序架构