在intentService中調(diào)用網(wǎng)絡請求,需要吐司
吐司代碼:
object ApiErrorMessageHelper {
/**
* 根據(jù)errorCode,顯示相應的信息
*/
fun showToastMessage(errorCode: Int, serviceMessage: String?) {
var message = serviceMessage
when (errorCode) {
ErrorCode.CIRCLE_NOT_EXIST -> {
message = "圈子不存在"
}
}
message?.let {
if (ErrorCodeUtils.isNeedShowMsg(errorCode)) {
try {
App.INSTANCE.toast(it)
} catch (e: Exception) {
Looper.prepare()
App.INSTANCE.toast(it)
Looper.loop()
}
}
}
}
}
調(diào)用代碼
//全局成功預處理
when (when {
it.code > 0 -> it.code
it.status > 0 -> it.status
else -> 0
}) {
ErrorCode.SUCCESS -> {
//請求成功返回正常
Observable.just(it.data)
}
ErrorCode.NEED_LOGIN -> {
//請求成功返回登錄異常
Observable.error(LoginException(it.code, it.message))
}
ErrorCode.TOKEN_EXPIRED -> {
//token過期需要刷新token
Observable.error(TokenExpiredException())
}
//其他請求成功,返回異常
else -> {
ApiErrorMessageHelper.showToastMessage(it.code, it.message)//這一行調(diào)用,會導致下一行受阻,無法執(zhí)行到下一行代碼
Observable.error(ApiException(it.code, it.message, it.fields))
}
}
測試代碼
Looper.prepare()
Looper.loop()
Observable.error(ApiException(it.code, it.message, it.fields))
結(jié)論:
在Looper.loop()后會導致后續(xù)代碼受阻