第一篇:OkHttp 优雅封装 OkHttps 之 气海雪山初探 OkHttps 是 OkHttp 的轻量封装包。和 Retrofit 相比,它更加的开箱即用,并且 API 更加自然和语义化。它用起来很优美,有点像 RxJava 却比 RxJava 更简单。 项目地址 安卓中使用需要把 JDK 版本调成 1.8,在 app 模块的 build.gradle 中加入以下配置即可: 在正式开始之前,我们依然假设,下文中出现 OK,一切就绪,我们接着上篇文章继续讲。 由于 OkHttps 并不依赖于 Android,所以它并不提供生命周期绑定的直接实现,但它的一些扩展机制让我们很容易就可以实现这个需求。在开始之前,我们首先来理解何为生命周期绑定: 所谓的生命周期绑定:即是让 HTTP 任务感知其所属的 Activity 或 Fragment 的生命周期,当 Activity 或 Fragment 将被销毁时,框架应自动的把由它们发起的但尚未完成的 HTTP 任务全部取消,以免导致程序出错! 现在我们需要对 上述代码中的 那 以上两步其实已经实现了生命周期绑定的功能,但是在请求完成之后,我们需要在 以上三步便在Android中实现了生命周期与HTTP请求绑定的功能 是不是非常简单呢,懒得敲代码的同学还可以 点这里 OkHttps.java 直接下载封装好的源码,其中不仅编写了生命周期绑定的配置,还有在UI线程执行回调的配置。 有需要的同学,可以直接下载下来使用,还可以基于它再次扩展,比如实现自动添加 TOKEN 的功能,具体可以参考原文的 6.5 串行预处理器(TOKEN问题最佳解决方案),再比如扩展实现生命周期与下载事件绑定的功能,实现起来都非常简单。 如果这个项目还不错,就到这里点个小星星吧 Gitee:https://gitee.com/ejlchina-zhxu/okhttps
第二篇:OkHttp 优雅封装 OkHttps 之 上传下载解密
第三篇:OkHttp 优雅封装 OkHttps 之 回调线程魔变简介
Gitee:https://gitee.com/ejlchina-zhxu/okhttps
GitHub:https://github.com/ejlchina/okhttps起步
Maven
<dependency> <groupId>com.ejlchina</groupId> <artifactId>okhttps</artifactId> <version>1.0.4</version> </dependency>
Gradle
implementation 'com.ejlchina:okhttps:1.0.4'
android { // 省略其它配置.. compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } }
http
均是在构建时设置了BaseUrl
的HTTP
实例(详细请看前文):HTTP http = HTTP.builder() .baseUrl("https://api.demo.com") .build();
实现生命周期绑定(for Android)
HTTP
实例进行配置,配置后的HTTP
实例具有生命周期绑定的功能,在Activity
或Fragment
里,它的使用效果如下:// 在 Activity 或 Fragment 内发起请求 http.async("https://www.baidu.com") .bind(getLifecycle()) // 绑定生命周期 .setOnResponse((HttpResult result) -> { Log.i("FirstFragment", "收到请求:" + result.toString()); }) .get();
getLifecycle()
是Activity
或Fragment
自带的方法,而bind()
是HttpTask
的现有方法。在配置好HTTP
实例后,上述代码发起的请求便可以感知Activity
或Fragment
的生命周期。HTTP
实例到底该如何配置呢?第一步:配置预处理器
HTTP http = HTTP.builder() ... // 省略其它配置项 .addPreprocessor((Preprocessor.PreChain chain) -> { HttpTask<?> task = chain.getTask(); Object bound = task.getBound(); // 判断 task 是否绑定了 Lifecycle 对象 if (bound instanceof Lifecycle) { // 重新绑定一个 生命周期监视器(LCObserver)对象,它的定义见下一步 task.bind(new LCObserver(task, (Lifecycle) bound)); } chain.proceed(); }) ... // 省略其它配置项 .build();
第二步:定义生命周期监视器
public class LCObserver implements LifecycleObserver { HttpTask<?> task; Lifecycle lifecycle; LCObserver(HttpTask<?> task, Lifecycle lifecycle) { this.task = task; this.lifecycle = lifecycle; lifecycle.addObserver(this); } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) public void onStop() { task.cancel(); // 在 ON_STOP 事件中,取消对应的 HTTP 任务 } public void unbind() { // 在请求完成之后移除监视器 lifecycle.removeObserver(this); } }
第三步:配置全局回调监听
lifecycle
中移除LCObserver
对象:HTTP http = HTTP.builder() ... // 省略其它配置项 .completeListener((HttpTask<?> task, HttpResult.State state) -> { Object bound = task.getBound(); // 判断 task 是否绑定了生命周期监视器(LCObserver)对象 if (bound instanceof LCObserver) { // 解绑监视器 ((LCObserver) bound).unbind(); } return true; }) ... // 省略其它配置项 .build();
GitHub:https://github.com/ejlchina/okhttps
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算