Android 插件化开发——基础底层知识(Binder,AIDL)

最近在学习Android插件化开发,其实最早最插件化开发的理解就是:比组件化开发高一级。抱着提高能力的态度,买了本插件化开发书《Android插件化开发指南》,接下来的博客都将是Android插件化开发的相关知识。

通过这几天的学习和查找资料,慢慢的对插件化发生了改变,其实最早插件化做的热修复比较多,也就是线上修复BUG一类的,后来出现了RN以及热修复框架,特别是RN的跨平台。好像AndroidP之后对插件化开发影响挺大的,但是我觉得还是应该学习插件化,因为知识是不会变的,知识就那么多,变化万千而已。

本篇博客以及接下来的几篇博客将讲述Android底层相关知识,为插件化开发作准备。


Binder


Binder目的是为了解决跨进程通信。网上很多都是关于Binder的博客,说实话看的云里雾里,说白了就是看不懂C++。
1: Binder分为客户端client和服务端server两个进程。
关于客户端和服务端的定义:假如有两个进程:A和B。如果进程A想进程B发送消息,此时进程A就是客户端client,进程B就是服务端server。如果进程B向进程A发送消息,此时进程B就是客户端client,进程A就是服务端server。 说白了就是:谁发送消息谁就是客户端,谁接受消息,谁就是服务端。
2: Binder的组成。
既然是两个进程通信,那么中间需要这个Binder。通常服务端server会注册在一个ServiceManager中,然后,每一次客户端发送消息,都是通过Binder在ServiceManager中查找服务端,然后再通过Binder 驱动相应相应数据。所以说Binder组成:client,server,ServiceManager以及Binder。
3:Binder是怎样通信的
假如此时server端有一个add方法,那么服务端想调用这个方法,步骤如下:

  • 首先服务端在ServiceManager中注册。
  • SM会返回给客户端一个代理对象,这个代理对象就是Server端,不会直接返回Server,
  • client端通过这个代理对象间接调用server 端的add方法。
    示例图如下:
    在这里插入图片描述
    总结:Binder就是为了解决进程间通信。

AIDL


AIDL的原理就是Binder通信。对于AIDL的简单使用可以看下之前博客:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值