首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Retrofit--合理封装回调能让你的项目高逼格

绪论 前面我们讨论了使用Retrofit时怎样去设置OKHttp,包括持久化管理Cookie、设置网络超时、设置打印拦截器、设置缓存、Header等等,详细可查看 Retrofit–使用Retrofit...时怎样去设置OKHttp Retrofit+OKHttp 教你怎么持久化管理Cookie 今天我们讨论的主题是怎么封装回调才能完美的适应自己的需求。...call = apiService.getUser(username); call.enqueue(new Callback() { @Override public void onResponse...onFail(String message); public abstract void onAutoLogin(); } 我自定义了一个抽象类实现了Retrofit的CallBack,OnResponse...最后分享几个不错的Retrofit博客吧: 你真的会用Retrofit2吗?Retrofit2完全教程 深入浅出 Retrofit,这么牛逼的框架你们还不来看看?

1.6K10

Retrofit2与服务端实例讲解

作者:叶应是叶 链接:https://www.jianshu.com/p/bc4426a66cd6 网络上对 Retrofit2 的各种介绍文章已经很多了,不过往往只是对其用法进行介绍,而缺少相应的实践...这样就造成了在学习 Retrofit2 的过程中,对某些参数的作用并不能直观感受到,所以这里我就尝试着用 Nodejs 搭建了一个本地服务器,提供了几个接口用于支持 Get、Post 模式访问调用,支持文件上传和文件下载功能...,返回的数据格式有 Json 对象和 Json 数组,需要的参数格式可以由使用者来自由定义 本篇文章不会对 Retrofit2 的用法进行过多介绍,重点在于介绍服务端接口的搭建以及 Retrofit2...引入对 Retrofit2 和 converter-gson 的支持 implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation...Path("startId") int startId, @Path("number") int number); } 2.1、不带任何参数 这里看下不带任何自定义的参数与请求头的请求方式 //Get请求时不会带任何自定义的参数与请求头

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Retrofit--使用Retrofit时怎样去设置OKHttp

    绪论: 之前我们分析了使用Retrofit怎么用OkHttp持久化管理Cookie,今天打算继续跟大家来分享一些关于怎么去设置OKHttp?...如果你还不知道怎么持久化管理Cookie,请看这篇文章: Retrofit+OKHttp 教你怎么持久化管理Cookie,好了,废话不多说,开始今天的分享: 大家都知道Retrofit是Square公司基于...CallAdapter: 这个接口的主要作用就是将Call对象转化成另一个对象,原谅我的水平有限,没太看懂里面的代码 CallBack: 看接口名想必大家都能看出来,这是回掉接口,里面有两个回调方法 onResponse...其它的一些类就不一一介绍了,毕竟这篇文章的主题不是源码解析,如果你想从源码的角度去了解Retrofit,我推荐你可以去看这两篇文章: Retrofit2 完全解析 探索与okhttp之间的关系 Retrofit...1.回顾一下之前的持久化管理cookie: 保存本地cookie: CookieHandler cookieHandler = new CookieManager(new PersistentCookieStore

    65090

    Retrofit--使用Retrofit时怎样去设置OKHttp

    https://blog.csdn.net/lyhhj/article/details/51388147 绪论: 之前我们分析了使用Retrofit怎么用OkHttp持久化管理Cookie,今天打算继续跟大家来分享一些关于怎么去设置...如果你还不知道怎么持久化管理Cookie,请看这篇文章: Retrofit+OKHttp 教你怎么持久化管理Cookie,好了,废话不多说,开始今天的分享: 大家都知道Retrofit是Square公司基于...CallAdapter: 这个接口的主要作用就是将Call对象转化成另一个对象,原谅我的水平有限,没太看懂里面的代码 CallBack: 看接口名想必大家都能看出来,这是回掉接口,里面有两个回调方法 onResponse...其它的一些类就不一一介绍了,毕竟这篇文章的主题不是源码解析,如果你想从源码的角度去了解Retrofit,我推荐你可以去看这两篇文章: Retrofit2 完全解析 探索与okhttp之间的关系...1.回顾一下之前的持久化管理cookie: 保存本地cookie: CookieHandler cookieHandler = new CookieManager(new PersistentCookieStore

    71720

    【Android】Retrofit2.0源码解析

    还不会用Retrofit?少年去看看Retrofit 2.0 的使用吧!!! 源码解析 这里分别说明了都调用了哪些源码,都是怎么实现的。(里面涉及到一些设计模式,什么?你还不知道有什么设计模式?...(我不会告诉你们我一开始也是懵逼的~~) 对动态代理还不熟悉的看看这里: 公共技术点之 Java 动态代理 下面我们来一步步分析这个create方法: Utils.validateServiceInterface...); } } return result; } loadServiceMethod做了三件事: 1.先去serviceMethodCache中查找否存在...method(看来这货是有缓存的,这里采用了LinkedHashMap来缓存这些Method的解析结果),存在的话跳过第二步; 2.method不存在的话就创建一个,然后添加到缓存中; 3.返回ServiceMethod...参考 拆轮子系列:拆 Retrofit Retrofit源码1: 为什么写一个interface就可以实现http请求 Retrofit2 源码解析 Retrofit 源码分析之 Retrofit

    1.1K90

    Android 二次封装网络加载框架

    大家回顾一下手头上的项目代码,是不是或多或少存在这样那样的历史遗留问题,第三方框架调用混乱,没有封装,或者封装不测底。如果要替换框架,很有可能要对项目大动干戈。...不过这种方法,在项目中大多数人不会这样使用,至少都会封装成为一个工具类。封装完成之后如下。...handleResult(response,iResponseListener); } }); } 这种封装成工具类的比完全没有封装的好了很多,但是还是存在一定的问题的...instance.init(NetManger.mContext); } // 采用反射的形式实现,这样有一个好处是,以后增加新的实现类的话,我们只需要传递相应 的 Class, //而不需要更改...(String response) { LogUtil.i(TAG,"onResponse: response ="+response); } @Override

    1.5K10

    深入解析OkHttp3

    内置连接池,支持连接复用,减少延迟 3)支持透明的gzip压缩响应体 4)通过缓存避免重复的请求 5)请求失败时自动重试主机的其他ip,自动重定向 6)好用的API 其本身就是一个很强大的库,再加上Retrofit2...public void onFailure(Call call, IOException e) { } @Override public void onResponse...(Response response); 由于Response的状态有多种,比如成功和失败,所以需要onResponse分解为3个抽象方法 /** * * 状态码大于200,小于300 时调用此方法...方法中成功的情况又有区分,根据mType的类型不同有相应的处理逻辑,同时还要考虑Gson解析错误的情况 @Override public void onResponse(Call call, Response...ConnectionPool.connectionBecameIdle方法,如果不可被复用,则被移除,否则立刻唤醒上面cleanUp的wait,再次清理,因为可能超过了最大空闲数目 这样通过一个静态的线程池,ConnectionPool做到了每个实例定期清理,保证不会超过最大空闲时间和最大空闲数目的策略

    3.1K20

    ES6.8.2 kibana的monitoring访问报错We couldnt activate monitoring处理过程

    include_defaults&flat_settings查看xpack.monitoring.collection.enabled参数设置的是true没有问题图片接下来排查ES日志发下日志中有报错集群索引存在多...at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61) ~[elasticsearch-6.8.2...at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61) ~[elasticsearch-6.8.2...at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61) ~[elasticsearch-6.8.2...{} }, "aliases": {}}三、解决方案经过上述排查过程已确认问题,接下来的解决过程如下1、先把temp1 template中的index_patterns调整为x,这样索引创建就不会走这个模板了调整命令如下

    1.2K10

    App 组件化模块化之路——Android 框架组件(Android Architecture Components)使用指南

    模型驱动UI 模型持久化的好处就是:即使系统回收了 App 的资源用户也不会丢失数据,而且在网络不稳定的情况下 App 依然可以正常地运行。从而保证了 App 的用户体验。...ViewModel 不会关心 UI 长什么样,也不会受到 UI 组件配置改变的影响,例如不会受旋转屏幕后 activity 重新启动的影响。因此它是一个与 UI 组件无关的。...webservice.getUser(userId).enqueue(new Callback() { @Override public void onResponse...(Room 组件) Android 框架提供了 Room 组件,为 App 数据持久化提供了解决方案。...这些数据源可以是网络数据,缓存以及持久化数据。 框架结构图 ?

    1.7K20

    MVVM框架实现组件化之整体结构

    Room 就是一个sqlite数据持久化库,我们也可以使用别的ORM库。...View和Model的双向绑定是支持生命周期检测的,不会担心页面销毁了还有回调发生,这个由lifeCycle完成。...不会像MVC一样导致Activity中代码量巨大,也不会像MVP一样出现大量的View和Presenter接口。项目结构更加低耦合。...调用,通过控制反转来做组件解耦 组件化编译和非组件化编译切换 我们在工程根目录下的gradle.properties文件中加入一个Boolean类型的变量,通过修改这个变量来识别编译模式: # 每次更改...最后预告 后面会有一些列介绍在MVVM组件化过程中使用ARouter来跳转Activity和获取Fragment、DataBinding实现数据和UI的互相绑定、Rxjava2和Retrofit2动态数据获取

    1.9K70

    IM开发干货分享:有赞移动端IM的组件化SDK架构设计实践

    在有赞产品中,存在大量需要交易双方沟通交流的场景,比如,客户咨询商家产品信息,售前售后简单的答疑和维权等。...另外,有赞业务还存在一些特殊的复杂场景,如供应商、分销商、客户三方之间需要同步沟通,会同时存在多种沟通角色。...4、整体结构 下图中简要描述了有赞客户端中IM系统的基本结构 :  如上图所示,各分层的职责分工如下: 1)消息通道层:维护Socket长连接作为消息通道,消息收发流程主要在这一层中完成; 2)持久化层...为此IM SDK持久化层的数据库中,也实现了简单存储加载机制,下面描述典型的数据加载场景。...,也就是说接受方收到消息后,不会返回服务器收到消息的通知,服务器无法判断消息是否推送成功,这样在突然断网,网络模式切换,或者弱网环境下,会影响消息的到达率。

    1.9K20

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    图模型是否对数据进行了持久化? 简而言之,没有。 还像平常那样去持久化。 ViewModel 持有 UI 中的临时数据,但是他们不会进行持久化。...由于这一过程发生在主线程的配置更改期间,它需要快速处理才不会丢帧和引起视觉上的卡顿。...onSaveInstanceState() 在配置更改期间和 activity 进入后台时被调用;在这两种情况下,如果你的数据被保存在 ViewModel 中,实际上并不需要重新加载或者处理他们。...Activity 在配置更改后被创建:Activity 会将本次查询保存在 onSaveInstanceState() 的 bundle 参数中并且 ViewModel 也会将搜索结果缓存起来。...复杂数据通过本地持久化保存然后用 onSaveInstanceState() 来保存那些复杂数据的唯一 ID。ViewModel 在数据加载后将他们保存在内存中。

    3.8K30

    RabbitMQ 怎么保证可靠性、幂等性、消费顺序?

    MQ自身弄丢消息时的解决方法# 第一步:创建queue时设置为持久化队列,这样可以保证RabbitMQ持久化queue的元数据,此时还是不会持久化queue里的数据。...总结:同时设置queue和message持久化以后,RabbitMQ 挂了再次重启,也会从磁盘上重启恢复 queue,恢复这个 queue 里的数据,保证数据不会丢失。...我们可以更改为手动ACK模式,每次处理完消息之后,再手动ack一下。...# 如何保证消息队列消费的幂等性,这一块应该还是要结合业务来选择合适的方法,有以下几个方案:# 消费数据为了单纯的写入数据库,可以先根据主键查询数据是否已经存在,如果已经存在了就没必要插入了。...或者直接插入也没问题,因为可以利用主键的唯一性来保证数据不会重复插入,重复插入只会报错,但不会出现脏数据。

    1.8K20
    领券