登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

每日一问 | 可以不借助 bindService,实现跨进程 binder 通信吗?

鸿洋    2022-04-27 23:43   收藏

正在我们在开发的时候,涉及到需要跨进程通信,尤其是较为复杂的,需要拿到服务端 binder 代理进行交互的方式。

一般流程为:

  1. 编写 aidl 文件;
  2. 实现一个 Service 子类(独立进程),复写 onBind 方法,返回 Binder's Stub;
  3. 主进程通过调用 bindService,间接拿到 binder 驱动,然后实现 binder 通信;

更进一步的说,很多时候,我们也可以不依赖 aidl 文件,自己去实现Stub、Proxy类,利用 binder 驱动通过 transact 方法与服务端 Stub onTransact 进行跨进程交互。

但是依然是需要依赖 bindService 方法,去获取 binder驱动。

可以参考:Android aidl Binder框架浅析

不过我们今天的关注点在于:

  1. 可以不通过 bindService ,利用别的方式来传递 “binder 驱动”来实现跨进程通信吗?
  2. framework 层有哪些地方使用了 1 的方式进行通信?

自助提问入口:点击提交问题

删除留言

确认删除留言,会导致相关评论丢失?

取消 确定