对ActivityManagerService的一些理解

1、ActivityManagerService的作用是负责管理系统中所有的Activity,想要使用它的能力,必须要获得一个它的对象。
 2、ActivityManagerService是在SystemServer进程中创建的,并且运行在SystemServer进程。创建完成之后,就把它注册到ServiceManager中。
 3、想要获得ActivityManagerService的能力,需要跨进程通信
 
 到这里,知道了ActivityManagerService必须具备两个能力,一个是管理Activity的能力,一个是通过跨进程通信把自己的能力提供出去的能力。
 
  这两个能力ActivityManagerService都有吗?
  答案是:ActivityManagerService只有管理Activity的能力,另一个把自己的能力提供出去的是它的父类ActivityManagerNative
  
 4、ActivityManagerService继承自ActivityManagerNative这个类
 5、ActivityManagerNative通过实现IActivityManager接口获得的管理Activity的伪能力,为什么是伪能力。因为没有具体实现IActivityManager的方法,
    这些方法由ActivityManagerService实现。
 6、ActivityManagerNative还继承了Binder,提供了跨进程通信的能力。
 
    这里为什么不直接ActivityManagerNative提供Activity管理能力,而要派生ActivityManagerService这个类来提供呢?
    可能是框架设计的原因?简洁明了?
    
 7、ActivityManagerProxy,代理对象。Binder机制中的。
    这里有个疑问,为什么要用代理模式?
    
 8、获取ActivityManagerService能力的流程。
    首先调用ActivityManagerNative.getDefault方法,这个方法首先通过ServiceManager的getService方法获取
    注册在ServiceManager的ActivityManagerService对象。然后调用asInterface方法,这个方法有两个作用,
    一个是屏蔽掉ActivityManagerService继承的Binder成分。第二个是查询是不是跨进程通信,如果不是,直接返回。
    如果是跨进程,返回的是ActivityManagerProxy的对象,而ActivityManagerService对象保存在ActivityManagerProxy中,形成远程代理。
    这里因为ActivityManagerService是运行在单独进程的,所以一定是跨进程的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值