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


猜你喜欢
- 1.方法概述什么是方法方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有图书功能的代码集注意:方法必须先创建才可以使用,
- 介绍记录将elasticsearch集成到spring boot的过程,以及一些简单的应用和helper类使用。接入方式使用spring-b
- @CacheEvict无法解决分页缓存清除当下比较热门的spring缓存就是encache,但是最近在写毕业设计的时候,发现了在缓存分页的时
- 如上图所示,日期显示为"MM月DD日",或者其它格式,比如显示年、月、日 或 年月日带时间,设置如下:1、如下图设置,日
- 本文实例讲述了WinForm窗体间传值的方法。分享给大家供大家参考。具体实现方法如下:窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作
- 在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件 其中,添加的布局主要有RelativeLayout
- 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找开始正文1、先介绍本文会用到的window
- 本文实例讲述了Android编程简单设置ListView分割线的方法。分享给大家供大家参考,具体如下:<LinearLayout xm
- 本文实例为大家分享了Android Studio实现简易进制转换计算器的具体代码,供大家参考,具体内容如下1、问题描述设计并实现一个数制转换
- 概述Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,
- MyBatis-plus模糊查询在使用MyBatis-plus的时候,一些基础的增删改查可以不用再自己写sql了:public interf
- 突然想起来flash有碰撞反弹飘动as控制的效果,所以想起来用c#也来做一个桌面飘动碰撞反弹无标题栏窗体。有点像中了恶意病毒广告效果。主要代
- 使用HttpServletRequest可以防止盗链行为,什么是盗链行为,比如说在一个别的网站上超链接,指向我们的网页中的某个数据,这样从他
- 1,内容简介所谓的定时调度,是指在无人值守的时候系统可以在某一时刻执行某些特定的功能采用的一种机制,对于传统的开发而言,定时调度的操作分为两
- C# 的类型系统可分为两种类型,一是值类型,一是引用类型,这个每个C#程序员都了解。还有托管堆,栈,ref,out等等概念也是每个C#程序员
- Select Count(*)的返回值类型<select id="queryAlarmStatisticalAnalysis
- Kotlin 基础教程之数组容器ArraysKotlin 标准库提供了arrayOf()创建数组, **ArrayOf创建特定类型数组val
- 重点重点重点,不然会报错连接数据库url后面加个参数allowMultiQueries=true用习惯了 insertList 怎么能没有
- PUT和Delete请求使用在Form表单中,只支持get和post方式,而为了实现put方式我们可以通过如下三个步骤实现1)SpringM
- 一、概述一共两个线程,一个线程生产产品,一个线程消费产品,使用同步代码块方法,同步两个线程。当产品没有时,通知生产者生产,生产者生产后,通知