Android跨进程通信(AIDL、Binder

目录

Binder​编辑​编辑

一次完整的通信过程​编辑

IPC&&RPC

Binder原理简介

Framework Binder

Binder架构图​编辑

Binder类图​编辑

Binder类分层

如何使用Binder

Service端

Client端


  1. Binder

    Android系统中,每个应用程序是由Android的ActivityServiceBroadcastContentProvider这四大组件的中一个或多个组合而成,这四大组件所涉及的多进程间的通信底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案,当然也存在部分其他的IPC方式,比如Zygote通信便是采用socket。

  2. 一次完整的通信过程

  1. IPC&&RPC

  • IPC(进程间通讯),RPC(远程过程调用)

  • 从组件的角度,通信涉及三部分:

    • 源程序:假设是A进程

    • 目的进程:假设为B进程,假设提供led服务

    • 数据:char buf[512],数据就是一个buff,双方约定好数据格式;

  • 进程A怎么知道进程B提供的led的服务?为什么不是其他进程?

    • 进程B向service_manager注册led服务;

    • 进程A向service_manager查询led服务,得到一个handle,这个handle指向某个的某个服务,是服务的引用;binder驱动会自动根据服务对应的handle值,确定这个服务所在进程;

  • RPC关注的一些问题:

    • RPC:称为远程过程调用,Client调用Server端函数时,要调用哪个函数?

      • 对server的函数编号,要调用哪个函数,把函数编号(这个编号最后会被封装成txn->code)发给server;

    • 调用的函数,给被调用的函数传什么参数?这些参数怎么传递过去的?

      • 通过IPC的buffer传递给server

    • 调用的返回值是什么?

      • server端通过buffer将返回值传递给client端的调用;

  1. Binder原理简介

  • Binder通信采用C/S架构,从组件视角来说,包含Client、Server、ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务;

  • 从流程的角度:Binder分为三大基础流程,分别是:

    • 注册服务(addService)

    • 获取服务(getService)

    • 使用服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值