当前位置: 首页 > 面试题库 >

网络框架有哪些?他们之间的区别是什么?

洪俊能
2023-03-14
本文向大家介绍网络框架有哪些?他们之间的区别是什么?相关面试题,主要包含被问及网络框架有哪些?他们之间的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下

Xutils 这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的严重,一旦这个框架出现问题,那么对项目来说影响非常大的

OKhttp Android开发中是可以直接使用现成的api进行网络请求的。就是使用HttpClient,HttpUrlConnection进行操作。okhttp针对Java和Android程序,封装的一个高性能的http请求库,支持同步,异步,而且okhttp又封装了线程池,封装了数据转换,封装了参数的使用,错误处理等。API使用起来更加的方便。但是我们在项目中使用的时候仍然需要自己在做一层封装,这样才能使用的更加的顺手。

Volley Volley是Google官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持HttpClient、HttpUrlConnection, 甚至支持OkHttp,而且Volley里面也封装了ImageLoader,所以如果你愿意你甚至不需要使用图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可以使用,稍复杂点的需求还是需要用到专门的图片加载框架。Volley也有缺陷,比如不支持post大数据,所以不适合上传文件。不过Volley设计的初衷本身也就是为频繁的、数据量小的网络请求而生。

Retrofit Retrofit是Square公司出品的默认基于OkHttp封装的一套RESTful网络请求框架,RESTful是目前流行的一套api设计的风格, 并不是标准。Retrofit的封装可以说是很强大,里面涉及到一堆的设计模式,可以通过注解直接配置请求,可以使用不同的http客户端,虽然默认是用http ,可以使用不同Json Converter 来序列化数据,同时提供对RxJava的支持,使用Retrofit + OkHttp + RxJava + Dagger2 可以说是目前比较潮的一套框架,但是需要有比较高的门槛。

Volley VS OkHttp Volley的优势在于封装的更好,而使用OkHttp你需要有足够的能力再进行一次封装。而OkHttp的优势在于性能更高,因为 OkHttp基于NIO和Okio ,所以性能上要比 Volley更快。IO 和 NIO这两个都是Java中的概念,如果我从硬盘读取数据,第一种方式就是程序一直等,数据读完后才能继续操作这种是最简单的也叫阻塞式IO,还有一种是你读你的,程序接着往下执行,等数据处理完你再来通知我,然后再处理回调。而第二种就是 NIO 的方式,非阻塞式, 所以NIO当然要比IO的性能要好了,而 Okio是 Square 公司基于IO和NIO基础上做的一个更简单、高效处理数据流的一个库。理论上如果Volley和OkHttp对比的话,更倾向于使用 Volley,因为Volley内部同样支持使用OkHttp,这点OkHttp的性能优势就没了, 而且 Volley 本身封装的也更易用,扩展性更好些。

OkHttp VS Retrofit 毫无疑问,Retrofit 默认是基于 OkHttp 而做的封装,这点来说没有可比性,肯定首选 Retrofit。

Volley VS Retrofit 这两个库都做了不错的封装,但Retrofit解耦的更彻底,尤其Retrofit2.0出来,Jake对之前1.0设计不合理的地方做了大量重构, 职责更细分,而且Retrofit默认使用OkHttp,性能上也要比Volley占优势,再有如果你的项目如果采用了RxJava ,那更该使用 Retrofit 。所以这两个库相比,Retrofit更有优势,在能掌握两个框架的前提下该优先使用 Retrofit。但是Retrofit门槛要比Volley稍高些,要理解他的原理,各种用法,想彻底搞明白还是需要花些功夫的,如果你对它一知半解,那还是建议在商业项目使用Volley吧。

 类似资料:
  • 本文向大家介绍图片加载框架有哪些?他们之间的区别是什么?(这个也是必问的)相关面试题,主要包含被问及图片加载框架有哪些?他们之间的区别是什么?(这个也是必问的)时的应答技巧和注意事项,需要的朋友参考一下 ImageLoader : 优点: ① 支持下载进度监听; ② 可以在 View 滚动中暂停图片加载; ③ 默认实现多种内存缓存算法这几个图片缓存都可以配置缓存算法,不过 ImageLoader

  • 本文向大家介绍HTML5有哪些存储类型?它们之间有什么区别?相关面试题,主要包含被问及HTML5有哪些存储类型?它们之间有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 cookie: 最大 4k, 基本无兼容问题, 所有同源tab 共享, 每次请求都携带, key-value 存储, value 只存字符串 sessionStorage 无大小限制, 只在当前 tab 有效, tab 关闭

  • 问题内容: 我想知道Hibernate和Java EE 5中的简单持久性之间的区别/相似之处吗? 我不清楚Hibernate是否实现Java EE 5持久性实现,或者它是否是完全不同的后端系统数据表示方法。 我对Hibernate及其与Java EE 5教程中有关Java持久性的概念的关系感到困惑…您能否阐明Hibernate在实体和EJB上下文中的作用? 另外,我想知道其他方法(框架),例如JP

  • 本文向大家介绍display有哪些值?分别说明他们的作用是什么?相关面试题,主要包含被问及display有哪些值?分别说明他们的作用是什么?时的应答技巧和注意事项,需要的朋友参考一下 block none inline-block initial table inline flex 自己能打出来的只有这些

  • 本文向大家介绍阻止事件的默认行为有哪些?说说它们之间的区别是什么?相关面试题,主要包含被问及阻止事件的默认行为有哪些?说说它们之间的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 事件冒泡和事件捕获。 事件冒泡:事件按照从最精确的目标对象到最不特定的事件目标的顺序触发。 事件捕获:事件从最不精确的对象开始触发,然后到最精确的目标对象。

  • (1)String String是不可变对象,每次对String类型的改变时都会生成一个新的对象。 (2)StringBuilder 线程不安全,效率高,多用于单线程。 (3)StringBuffer 线程安全,由于加锁的原因,效率不如StringBuilder,多用于多线程。 不频繁的字符串操作使用String,操作频繁的情况不建议使用String。 StringBuilder > String