Android 代理模式讲解

本文详细介绍了代理模式在Android中的应用,包括代理模式的定义、使用场景和UML类图。通过实例展示了ActivityManagerNative和ActivityManagerProxy如何作为IActivityManager接口的代理,实现与ActivityManagerService之间的跨进程通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1代理模式介绍

代理模式也称为委托模式

1.2代理模式的定义

为其他对象提供一种代理以控制改对这个对象的访问

1.3代理对象的使用场景

当无法或不想直接访问某一个对象的时候或者直接访问一个对象存在困难的时候,可以通过一个代理对象来间接访问,以保证客户端的透明性,委托对象与代理对象需要实现相同的接口

1.4代理模式的简单UML类图


具体代码如下

package com.android.proxy;

public interface Subject {

	void visit();
}


package com.android.proxy;

public class SubjectNative implements Subject{

	public void visit() {
		// TODO Auto-generated method stub
		System.out.println("Welcome visit");
	}

}


package com.android.proxy;

public class SubjectProxy implements Subject{

	private SubjectNative subjectNative;//持有真正主题的使用
	public SubjectProxy(SubjectNative subjectNative)
	{
		this.subjectNative = subjectNative;
	}
	public void visit() {
		// TODO Auto-generated method stub
		subjectNative.visit();
	}

}

package com.android.proxy;

public class Client {

	public static void main(String[] args) {
           //构造一个真实的主题
		SubjectNative subjectNative = new SubjectNative();
           //通过真实的主题创建一个代理主题
		SubjectProxy subjectProxy = new SubjectProxy(subjectNative);
           //调用代理的相关方法
		subjectProxy.visit();
	}
}



1.5 接下来我们分析下Android 源代码中使用的代理模式


我们发现ActivityManagerNative 和 ActivityManagerProxy都继承IActivityManager接口,而ActivityManagerService 继承于ActivityManagerNative,我们通过调用ActivityManagerProxy来引用ActivityManagerService.

备注:理解注意点

1)ActivityManagerNative 和 ActivityManagerProxy都实现了IActivityManager接口。

2)ActivityManagerNative由其子类ActivityManagerService具体实现。

3)ActivityManagerService是系统级Service并且运行与独立进程空间中,可以通过ServiceManager来获取它,而ActivityManagerProxy也运行在自己所处的进程中,两者不相同,因此ActivityManagerProxy和ActivityManagerService之间通讯必须通过跨进程进行通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值