java协程_java-以正确的方式使用协程

我是第一次实施协程.我正在为一个简单的登录应用程序遵循MVP模式.这是我的代码流-

单击的登录按钮将遵循此方向-

LoginFragment-> LoginPresenter->储存库-> APIRepository->改造接口

登录响应将遵循此方向-

RetrofitInterface-> APIRepository->储存库-> LoginPresenter-> LoginFragment

这是代码-

RetrofitInterface.kt

@POST("login")

fun loginAPI(@Body loginRequest: LoginRequest): Deferred?

这是我的Result.kt

sealed class Result {

class Success(val data: T) : Result()

class Error(val exception: Throwable, val message: String = exception.localizedMessage) : Result()

}

APIRepository.kt

override suspend fun loginAPICall(loginRequest: LoginRequest) : Result? {

try {

val loginResponse = apiInterface?.loginAPI(loginRequest)?.await()

return Result.Success(loginResponse!!)

} catch (e : HttpException) {

return Result.Error(e)

} catch (e : Throwable) {

return Result.Error(e)

}

}

仓库

override suspend fun loginUser(loginRequest: LoginRequest): Result {

if (isInternetPresent(context)) {

val result = apiRepositoryInterface?.loginAPICall(loginRequest)

if (result is Result.Success) {

val loginData = result.data

cache?.storeData(loginData)

}

return result!!

} else {

return Result.Error(Exception())

}

}

我现在如何在演示者中启动协程?我需要在后台线程上执行此API调用,然后在UI线程上发布结果吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值