2019-06-13 Looper問題

在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ù)代碼受阻

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容