深入解析OkHttp与Retrofit,Android研发面试不会这些可不行!
Posted River_ly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入解析OkHttp与Retrofit,Android研发面试不会这些可不行!相关的知识,希望对你有一定的参考价值。
OkHttp是Square开源的轻量级框架,一款高效、快速的android版Http client,是当下最常运用的框架之一,也是面试必问的知识方向。
但是这个框架也给用户留下了不少的问题:
- 无法适配自动进行线程的切换,消息回来需要切到主线程,主线程要自己去写。
- 调用比较复杂,需要自己进行封装。
- 用户网络请求的接口配置繁琐,尤其是需要配置请求body,请求头,参数的时候;
- 数据解析过程需要用户手动拿到responsbody进行解析,不能复用;
- 缓存失效:网络请求时一般都会获取手机的一些硬件或网络信息,比如使用的网络环境。同时为了信息传输的安全性,可能还会对请求进行加密。在这些情况下OkHttp的缓存系统就会失效了,导致用户在无网络情况下不能访问缓存。
而解决这些问题的首选方案就是用 Retrofit ,基于OkHttp的一个高解耦的网络框架
一般来说是这样的组合
大家一般都推荐RxJava+Retrofit+OkHttp框架。
- Retrofit主要负责应用层面的封装,比如:具体的请求、线程切换、数据转换。主要面向开发者,方便使用,比如请求参数,响应数据的处理,错误处理等;
- OkHttp负责请求的过程;
- RxJava负责异步,各种线程之间的切换
搭配使用非常便利。
下面让我们来进行一个对比,看一下,Retrofit是如何来封装Okhttp请求的。
大体的流程都是: 创建网络请求实体client->构建真正的网络请求-> 将网络请求方案与真正的网络请求实体结合构成一个请求Call->执行网络请求->处理返回数据->处理Android 平台的线程问题。
通过对比我们可以发现:
- OkHttp创建的是OkhttpClient,然而retrofit创建的是Retrofit实例
- 构建蓝色的Requet的方案,retrofit是通过注解来进行的适配
- 配置Call的过程中,retrofit是利用Adapter适配的Okhttp的Call
- 相对okhttp,retrofit会对responseBody进行自动Gson解析
- 相对okhttp,retrofit会自动的完成线程的切换。
面试的时候,以上Retrofit和Okhttp相关的知识点一般都会被问到。
下面是牛客上的部分面经分享
通过上面的面试题分享我们不难发现,大厂面试很多题目都是问的基础,但是还是有很多人回答不上来,每年都有很多朋友挂在上面,归根结底,就是基础知识掌握的不够牢靠。
这里给大家分享一份由多位互联网大厂的大佬整理而成的《Android开发核心知识点笔记》,里面对Android开发的各个知识点都有详尽的讲解,并且还配合了Android开发岗高工技术体系图,大家可以参照着系统的学习,也可以查漏补缺提升个人竞争力。
有需要的话,可以直接 点击这里快速免费获取
相信这一套笔记可以帮助大家有效的掌握技术点原理,帮助大家在未来加薪升职!
共勉!
码字不易,如果觉得本文对你有帮助的话,不如顺手给我点个赞、评论区留言或者转发支持一下呗~
以上是关于深入解析OkHttp与Retrofit,Android研发面试不会这些可不行!的主要内容,如果未能解决你的问题,请参考以下文章
深入浅出安卓热门网络框架 OKHttp3 和 Retrofit 原理
带你一步步剖析Retrofit 源码解析:一款基于 OkHttp 实现的网络请求框架