两种方式封装Retrofit+协程,实现优雅快速的网络请求,移动应用开发专业介绍及就业方向

本文介绍了两种方式封装Retrofit+协程以实现优雅快速的网络请求,适用于移动应用开发。第一种方式利用LiveData贯穿网络请求链,简化代码但存在解耦不彻底的问题。第二种方式则更符合职责单一原则,网络请求与Loading状态分开,适合多数据源管理。文中还提及了移动开发专业介绍及就业方向。
摘要由CSDN通过智能技术生成

onException { e ->

Log.i(“wutao”,“这是非后台返回的异常回调”)

}

onShowLoading {

Log.i(“wutao”,“自定义单个请求的Loading”)

}

onComplete {

Log.i(“wutao”,“网络请求结束”)

}

}

请求自带Loading

很多网络请求都需要Loading,不想每次都写onShowLoading{}方法,也so easy。

mViewModel.wxArticleLoadingLiveData.observeState(this, this) {

onSuccess { data ->

Log.i(“wutao”,“网络请求的结果是:$data”)

}

}

observeState()第二个方法传入ui的引用就可,这样单个网络请求之前会自动加载Loading,成功或者失败自动取消Loading。

上面代码都是Activity中,我们来看下ViewModel中。

ViewModel中代码示例


class MainViewModel{

private val repository by lazy { WxArticleRepository() }

val wxArticleLiveData = StateLiveData<List>()

fun requestNet() {

viewModelScope.launch {

repository.fetchWxArticle(wxArticleLiveData)

}

}

}

很简单,引入对应的数据仓库Repo,然后使用协程执行网络请求方法。来看下Repo中的代码。

Repository中代码示例


class WxArticleRepository : BaseRepository() {

private val mService by lazy { RetrofitClient.service }

suspend fun fetchWxArticle(stateLiveData: StateLiveData<List>) {

executeResp(stateLiveData, mService::getWxArticle)

}

}

interface ApiService {

@GET(“wxarticle/chapters/json”)

suspend fun getWxArticle(): BaseResponse<List>

}

获取一个Retrofit实例,然后调用ApiService接口方法。

封装一的优势

======

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值