系列笔记17、代理模式-ActivityManagerProxy、Binder
来源:互联网 发布:淘宝店铺联盟在哪里 编辑:程序博客网 时间:2024/06/07 11:19
Android源码里的ActivityManagerProxy是代理模式的实现。
package android.app;
public abstract class ActivityManagerNative extends Binder implements IActivityManager
{
class ActivityManagerProxy implements IActivityManager
{
...
}
}
ActivityManagerProxy相当于代理部分,实现了IActivityManager接口,该接口定义了一些Activity相关的接口方法。
package android.app;
public interface IActivityManager extends IInterface {
public int startActivity(IApplicationThread caller, String callingPackage, Intent intent,
String resolvedType, IBinder resultTo, String resultWho, int requestCode, int flags,
ProfilerInfo profilerInfo, Bundle options) throws RemoteException;
public Intent registerReceiver(IApplicationThread caller, String callerPackage,
IIntentReceiver receiver, IntentFilter filter,
String requiredPermission, int userId) throws RemoteException;
public ComponentName startService(IApplicationThread caller, Intent service,
String resolvedType, String callingPackage, int userId) throws RemoteException;
...
}
IActivityManager接口相当于代理模式中的抽象主题,而真正实现主题的,则是继承自ActivityManagerNative的AMS。
public final class ActivityManagerService extends ActivityManagerNative
implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {
...
}
AMS属于系统级的Service并且运行于独立的进程空间中,可以通过ServiceManager来获取它,而ActivityManagerProxy也运行于自己所处的进程空间中,AMS与ActivityManagerProxy属于跨进程通信,实现是基于Android的Binder机制。ActivityManager是管理与维护Activity相关信息的类,其大多数逻辑实质上是由ActivityManagerProxy承担。
Android中的Binder机制与AIDL
传统的跨进程通信方式有:Socket、信号量、管道、内存共享、消息队列等
Binder所涉及的4个主要模块:Binder Client、Binder Server、ServerManager和Binder Driver。
Binder Client相当于客户端,Binder Server相当于服务器, ServerManager相当于DNS服务器,Binder Driver 相当于一个路由器。
参考文章
http://blog.csdn.net/luoshengyang/article/details/6618363/
- 系列笔记17、代理模式-ActivityManagerProxy、Binder
- 系列笔记17、代理模式简介
- Binder中的代理模式
- Android源码代理模式---Binder
- Android笔记 - Binder之servicemanager代理对象
- 设计模式系列:代理模式
- oc学习笔记-protocol代理模式
- 代理模式学习笔记
- Java代理模式笔记
- 代理模式(笔记)
- 代理模式--学习笔记
- 代理模式笔记
- 代理模式学习笔记
- 代理模式学习笔记
- 代理模式学习笔记
- 代理模式学习笔记
- 设计模式系列之代理
- Android笔记 - Binder之Client请求Service代理对象
- Gray码
- ora-600 qkatab_10错误
- Script:0级备份和1级备份
- 安全之LDAP客户端管理
- iostat 结果解析
- 系列笔记17、代理模式-ActivityManagerProxy、Binder
- 关于光纤卡
- IDE,SATA,SATA II,SCSI,SAS,…
- EBS中的OPP服务
- IDL定义
- linux右键打开终端
- linux使用vi命令,提示/root/.vimrc
- LOB segment and LOB index(11g R2…
- How to move LOB Data to Another …