八、结构型模式:代理模式

本文深入探讨了Android系统中进程间通信(IPC)的核心机制——Binder,并解释了其如何支撑起Android服务架构,确保各应用独立运行的同时实现数据共享。

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

这个模式准备用Android来说明,它是Android的灵魂,我相信不论到Android几点几,这个机制是不会变的。

做Android framework的或者阅读过源码的其实会发现Android几乎所有的service都是代理模式,ams、pms、appops、fingerprints等等。那Android为什么要这样做呢?以为目前的水平分析,Android会给每个app启动一个独立的虚拟机,这样做的好处是即便某个app出现崩溃也不会影响系统,最多它那个进程挂掉内存震荡造成暂时卡顿。每个app独立于一个进程空间,那么就存在一个数据共享的问题,也缺少一个主持系统运行的人。就需要通过IPC(跨进程)机制去做到这些。

Android可以使用的ipc机制有很多,framework采用最多的是Binder。这里不粘贴代码只说思想。在Android系统中有很多进程,其中有一个进程运行着ams,sdk中和app开发通过调用am去执行各种方法,其实最终都走到了这里,它们之间就是通过Binder这种机制,去做远程调用。什么意思呢,就是调用远程方法。P2进程调用P1进程的方法,那么P2中势必要持有一个P1的引用(先这样理解),其实叫引用也没毛病,只不过这个引用是P1跨进程返给你句柄,你拿到这个就可以访问P1中的方法,这个过程就像P2将自己很多引用散布在P1、P2...Pn中。其实到这里,再去看那些service和servicemanager,就非常一目了然,这时候再去看binder才是正确的学习方法,直接去看binder只会云里雾里不知所云,存在即合理,一个机制存在,必定是为了一个问题或者一系列相关问题,不妨直接去看看问题,再回头看机制,就会发现和它心有灵犀。

代理模式是跨进程或者说在CS架构中的灵魂。

转载于:https://my.oschina.net/wfy94/blog/1819065

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值