深入解析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 平台的线程问题。

通过对比我们可以发现:

  1. OkHttp创建的是OkhttpClient,然而retrofit创建的是Retrofit实例
  2. 构建蓝色的Requet的方案,retrofit是通过注解来进行的适配
  3. 配置Call的过程中,retrofit是利用Adapter适配的Okhttp的Call
  4. 相对okhttp,retrofit会对responseBody进行自动Gson解析
  5. 相对okhttp,retrofit会自动的完成线程的切换。

面试的时候,以上Retrofit和Okhttp相关的知识点一般都会被问到。

下面是牛客上的部分面经分享

通过上面的面试题分享我们不难发现,大厂面试很多题目都是问的基础,但是还是有很多人回答不上来,每年都有很多朋友挂在上面,归根结底,就是基础知识掌握的不够牢靠。

这里给大家分享一份由多位互联网大厂的大佬整理而成的《Android开发核心知识点笔记》,里面对Android开发的各个知识点都有详尽的讲解,并且还配合了Android开发岗高工技术体系图,大家可以参照着系统的学习,也可以查漏补缺提升个人竞争力。

有需要的话,可以直接 点击这里快速免费获取

相信这一套笔记可以帮助大家有效的掌握技术点原理,帮助大家在未来加薪升职!

共勉!

码字不易,如果觉得本文对你有帮助的话,不如顺手给我点个赞、评论区留言或者转发支持一下呗~

以上是关于深入解析OkHttp与Retrofit,Android研发面试不会这些可不行!的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出安卓热门网络框架 OKHttp3 和 Retrofit 原理

Retrofit2 完全解析 探索与okhttp之间的关系

带你一步步剖析Retrofit 源码解析:一款基于 OkHttp 实现的网络请求框架

RxJava+Retrofit+OkHttp深入浅出-mvp(使用篇)

Android网络编程源码解析Retrofit

Retrofit源码解析