android binder深入分析之承上启下的native层
Posted Android高级知识分享官
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android binder深入分析之承上启下的native层相关的知识,希望对你有一定的参考价值。
android binder深入分析之承上启下的native层
一问到binder是怎么跨进程通信的?那么同学们肯定大部分回答:binder最后调到底层还是通过binder驱动来实现跨进程通信的。那么这里就要问一下:请问android中一个app层面的binder调用,是怎么一步步调用到了底层binder驱动呢?这也就是本节要给大家来详细剖析的,一共分为3大部分。
1、ServiceManager获取java类型Proxy对象部分
2、Proxy接口代理对象调用到驱动部分
3、Proxy接口获取到驱动数据后返回给java层部分
1、ServiceManager获取java类型Proxy对象部分
平时系统中获取某一个服务,一般都是最后都是ServiceManager.getService这种方式,来看看它的源码:
//ServiceManager.java中
public static IBinder getService(String name)
try
//缓存中获取,第一次缓存没有
IBinder service = sCache.get(name);
if (service != null)
return service;
else
//Binder.allowBlocking仅仅是为了提示是否为阻塞行接口,没有实际干活
return Binder.allowBlocking(getIServiceManager().getService(name));
catch (RemoteException e)
Log.e(TAG, "error in getService", e);
return null;
这里大家可以看到实际真正干活的是getIServiceManager().getService(name),这里又分为2个部分
2、Proxy接口代理对象调用到驱动部分
3、Proxy接口获取到驱动数据后返回给java层部分
创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖以上是关于android binder深入分析之承上启下的native层的主要内容,如果未能解决你的问题,请参考以下文章
[gitbook] Android框架分析系列之Android Binder详解