2022
okhttp框架解析
作为Android程序员除了Google官方提供Android源码,开发项目时还要用很多优秀的三方开源库帮助我们快速开发,OKhttp3作为square开源的网络库,已成Android程序员必用的网络库,因为其优秀的代码设计、完善的网络请求功能,也被Google收入官方源码实现。作为开发者学习作为网络的网络有很多分析OkHttp的文章,大多都是讲OkHttp的使用、框架结构以及设计模式等这些内容。而这些只是OkHttp的一些手段和方式,它本质上一个网络请求的库,我们阅读源码的时,实现只不过是为了达到目的一种方式,脱离目的的实现,如缘木求鱼。所以在分析OkHttp源码的时一定要结合http本身的特性,不然就很容易偏离事物本质。
Java Binder解析
在Native Binder的系统服务注册过程中,核心是ServiceManager,在Java Binder中,也有一个ServiceManager,然而这个ServiceManager是个Java文件。在Java Binder注册系统服务到也需要用到ServiceManager,那么需要选择一个系统服务来窥探这一过程,这里以常见的ActivityManagerServcie(AMS)为例。
Java Binder的JNI注册
在Binder机制的架构中,分为Java Binder和Native Binder。Java层的Binder可以说是Native层的Binder的镜像,而Java Binder这个镜像归根结底还是依赖Native Binder层的运转,那么Java Binder要和Native Binder肯定需要建立某种联系进行通信,这种联系就是通过JNI,
Native Binder机制之获取系统服务
继续以MediaPlayerService为例,学习系统服务的获取过程。该过程的内容分为两部分,客户端MediaPlayerService请求获取服务和服务端ServiceManager处理请求。
Native Binder机制之ServiceManager
上篇文章以MediaPlayService为例,讲解了系统服务进程注册到ServiceManager的过程,那与之相对应的过程是服务的获取过程。但在这之前需要先了解ServiceManager,之前有说到过defaultServiceManager函数返回BpServiceManager,然后通过命令发送给handle为0的服务端,这个服务端就是ServiceManager。所以首先要了解ServiceManager的启动过程,这样更有助于理解系统服务的注册过程和获取过程。