从Activity的启动学习Binder机制

从Activity的启动学习Binder机制


AMS类关系图

AMS类图

核心类功能

  • IActivityManager:继承IInterface接口,抽象出跨进程通信要实现的功能
  • ActivityManagerNative:继承binder,承担binder职责,实现了核心方法onTransact,在该方法中读取Parcel中数据,调用方法处理数据,然后向Proxy返回结果
  • ActivityManagerService: IActivityManager的实现类,实现了跨进程通信要调用的功能
  • ActivityManagerProxy:数据存储在Parcel中并传输数据给server,获取server端传回的结果并返回
  • Parcel:用于client与service端进行数据交互的类

代码流程分析

AMS binder流程

AIDL的使用

  • AIDL是Android 系统给应用层开发者提供的一种简便的跨进程通信方案。他的底层还是binder实现
    • Server端:在AIDL文件中声明接口(跨进程要执行的功能),根据该文件在编译时动态生成IxxxInterface,Stub(与ActivityManagerNative功能一致),xxxProxy类,然后你需要在Service中继承Stub类,实现跨进程通信要执行的功能。
    • Client端:继承ServiceConnection接口,在onServiceConnected方法中获的Proxy引用,就可以回调Service端方法
    • client和Server建立连接:bindService
    • AIDL调用流程:bindService(在调用bindService后,会调用Service的onBind方法,在onBind方法中,会回调ServiceConnection的onServiceconnected方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值