Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 理解Android系統的進程間通信原理(一)----RPC中的代理模式

理解Android系統的進程間通信原理(一)----RPC中的代理模式

編輯:Android開發實例

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 @Override
16 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 @Override
17 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 args
13 */
14 public static void main(String[] args) {
15
16 ProxyRole proxy = new ProxyRole();
17 proxy.service("magc");
18 }
19
20 }
運行測試類,控制台輸出結果為:   由於時間倉促,錯誤難免,希望能給大家有所啟示,也算是在這裡拋磚引玉了,呵呵
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved