Android使用 Coroutine + Retrofit打造简单的HTTP请求库
作者:ezy 发布时间:2023-11-17 04:56:11
标签:Coroutine,Retrofit,Android,http请求库
基于 kotlin/coroutine/retrofit/jetpack 打造,100来行代码,用法超级简单舒适
设置默认Retrofit工厂和全局错误处理程序
HttpCall.init(retrofitFactory = {
// ...
}, errorHandler = { throwable ->
// ...
})
基本用法
data class Reault(val data:String)
interface TestService {
@GET("test")
fun test(): Call<Reault>
}
// 在 activity/fragment 中使用,获取请求结果
http<TestService>().test().result(this) {
// it 是 Reault
}
// 在 activity/fragment 中使用,获取请求响应对象
http<TestService>().test().response(this) {
// it 是 Response<Result>
}
显示请求状态,基于 HttpCall扩展出 withSpinning 方法
fun <T : Any> HttpCall<T>.withSpinning(activity: FragmentActivity, spinning: Boolean = false, text: String = ""): HttpCall<T> {
activity.apply {
if (isFinishing || isDestroyed) return@apply
val dialog = showLoading(spinning, text)
finally { dialog.dismiss() }
}
return this
}
http<TestService>().test().result(this) {
Log.e("api", it.data)
}.withSpinning(this)
引入
https://github.com/czy1121/httpcall
repositories {
maven { url "https://gitee.com/ezy/repo/raw/android_public/"}
}
dependencies {
implementation "me.reezy.jetpack:httpcall:0.4.0"
}
来源:https://juejin.cn/post/6937201496496799757
0
投稿
猜你喜欢
- 代码:package com.lwj.test.proxy;import java.lang.reflect.InvocationHandl
- ${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,
- 记得上学的时候学习英语,每个英语老师说到英语翻译的时候都会说英语翻译要做到“信、达、雅”。如今做了一名程序员竟然体会我还是想用这三种境界来要
- 本文实例为大家分享了Android Webview使用小结,供大家参考,具体内容如下#采用重载URL的方式实现Java与Js交互在Andro
- 我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现。在SpringBoot中用得最多的就是Schedule
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 目录前言Maven依赖代码前言在工作中是否会遇到实用websocket客户端连接服务端的时候,网络波动,服务端断连的情况。会导致客户端被动断
- Failed to execute goal org.apache.maven.plugins:maven-resources-plugin
- 在做android开发时有这样一个需求,我们需要把地图的zoomcontroller放置于地图的右下角。 默认情况下,我们在eclipse中
- 继承和多态派生类具有基类所有非私有数据和行为以及新类自己定义的所有其他数据或行为,即子类具有两个有效类型:子类的类型和它继承的基类的类型。对
- 近日,Eclipse经常挂掉,都是由于JVM崩溃的原因。每次都有以下错误日志:## A fatal error has been detec
- 本文实例讲述了Java常用内置注解。分享给大家供大家参考,具体如下:一 通过@SuppressWarnings关闭警告信息1 代码publi
- 前言RefreshIndicator是Flutter里常见的下拉刷新组件,使用是比较方便的。但由于产品兄弟对其固定的刷新样式很是不满,而且代
- 是否允许循环依赖和bean的命名重复取决于beanfactory的两大属性allowBeanDefinitionOverriding和all
- 常见Bean后处理器的作用:public static void main(String[] args) { &
- 本文实例讲述了Java基于递归和循环两种方式实现未知维度集合的笛卡尔积。分享给大家供大家参考,具体如下:什么是笛卡尔积?在数学中,两个集合X
- 实体对象如下:/**使用lobmok插件*/@Getter@Setter@NoArgsConstructor@ToString@Equals
- 本文实例为大家分享了WPF实现背景灯光随鼠标闪动的具体代码,供大家参考,具体内容如下实现效果如下:思路:将容器分割成组合三角形Path,鼠标
- 我们在j2ee当中,连接数据库的时候经常会用到properties配置文件,我们原来在eclipse或者myeclipse当中会在src文件
- Spring Boot 异常处理异常处理是一种识别并响应错误的一致性机制,异常机制可以把程序中的异常处理代码和正常的业务逻辑代码分离,包装程