Android Binder原理解析

前言
IPC 是 Inter-Process Communication 的缩写,含义为进程间通信。

Binder是一个很深入的话题,本篇文章不打算深入探讨Binder的底层细节,重点介绍Binder的使用以及上层原理。

Binder 是Android中的一个类,他实现了IBinder接口。Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,他的设驱动是/dev/binder。从Framework层来说,Binder是ServiceManager连接各种Manager和相应ManagerService的桥梁。从Android应用层来说,Binder是客户端和服务端进行通信的媒介,通过binderService去绑定远程服务,进行通信。

AIDL中支持的数据类型
  • 基本数据类型(int、long、char、boolean、double等)
  • String 和CharSequence
  • List:只支持ArrayList,里面每个元素都必须能够被AIDL支持
  • Map:只支持HashMap,里面的每个元素都必须被AIDL支持,包括key。
  • Parcelable:所有实现了Parcelable接口的对象。
  • AIDL:所有的AIDL接口本身也可以在AIDL中使用。
AIDL生成结构图在这里插入图片描述
下面我们实现一个简单的AIDL并分析一下他的通信过程
Intent intent = new Intent(this, MyService.class);
bindService(intent,connection,BIND_AUTO_CREATE);

当我们调用bindService方法后。系统就会为我们把对应的远程服务端唤醒,看源码知道是通过ServiceManager 去远程服务用ClassLoader反射的方式启动需要启动的service。细节部分大家自己看frameWork层源码吧,东西太多了,这里只分析AIDL应用层流程。

Service启动之后就开始去创建BookBind类


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值