一、升级版:史上最精简的【带有缓存】的【网络数据加载】封装,Kotlin语言实现Retrofit2 结合OkHttp3网络层,ViewModel技术,使用Kotlin协程,加载网络数据,并添加缓存功能,,同时针对ApiService接口添加注解配置,来配置是否显示loadingDiaog、是否启用缓存功能,并且长按Activity可随时查看当前页面的所有网络请求LOG信息,减轻开发工作,且增加用户体验,堪称史上最简洁的代码,实现你想要的功能;如下:
一、接口声明
package com.chenliang.account
typealias Data<T> = Call<BaseResponse<T>>
typealias Datas<T> = Call<BaseResponse<ArrayList<T>>>
@MyApiService(
mName = "API",
mPath = "http://www.chenliang.com/app/",
mDevPath = "http://www.chenliang.com/dev/app/",
mTestPath = "http://www.chenliang.com/test/app/"
)
interface ApiService {
@MyRetrofitGo(mTag = "登录", mLoading = true, mFailToast = true)
@POST("home/login")
fun login(
@Query("account") account: String,
@Query("password") password: String
): Data<BeanUser>
@MyRetrofitGo(mTag = "注册", mLoading = true, mFailToast = true)
@POST("home/register")
fun register(
@Query("account") account: String,
@Query("password") password: String
): Data<BeanUser>
@MyRetrofitGo(mTag = "添加测试", mCache = false, mFailToast = true)
@POST("home/add")
fun addTest(
@Query("account") account: String,
@Query("password") password: String
): Data<BeanUser>
}
@MyApiService注解说明:
mName: API接口名称
mPath: API接口生产环境base路径
mDevPath: API接口开发环境base路径
mTestPath: API接口测试环境base路径
@MyRetrofitGo注解说明:
mLoading: 是否显示loading加载框
mCache:是否启用缓存
mHasCacheLoading:缓存存在情况下是否显示loading加载狂
mFailToast:接口失败时,是否自动toast提示message信息
mSuccessCode:接口成功后,接口内部调用RxBus自动发送的code值
mFailCode: 接口失败后,接口内部使用RxBus自动发送的code值
二、ViewModel中调用接口:
通过@MyApiService注解mName定义的名称,直接调用接口方法
package com.chenliang.account.vm
class AccountViewModel : MyBaseViewModel() {
fun login(account: String, pass: String) = go { API.login(account, pass) }
fun register(account: String, pass: String) = go { API.register(account, pass) }
}
三、自定义ViewModel使用:
mViewModel.login(user.name, user.password).obs(this@LoginActivity) {
it.c { //缓存数据 }
it.y { //请求成功 }
it.n { //请求失败 }
}
|