簡體   English   中英

使用 HMS 取消協程

[英]Coroutine cancellation with HMS

我正在使我的應用程序適應 HMS。 當我取消啟動的協程,捕獲並嘗試將 CancellationException 記錄到 HMS crashlytics 時,我的應用程序因奇怪的日志而崩潰。 如果我忽略了這個異常並且沒有使用方法AGConnectCrash.getInstance().recordException(throwable)將其記錄到 crashlytics 中,協程取消不會導致應用程序崩潰。 有人可以幫助解決這個問題嗎?

崩潰日志

java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at com.huawei.agconnect.crash.internal.bean.Event$Builder.summary(Unknown Source:5) at com.huawei.agconnect.crash.internal.log.AGCCrashNonFatal.collectInfo(Unknown Source:41) at com.huawei.agconnect.crash.internal.log.AGCCrashNonFatal.logException(Unknown Source:0) at com.huawei.agconnect.crash.internal.log.AGCCrashCore$4.run(Unknown Source:6) at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:784)

一些代碼示例

private fun loadData() {
    job?.cancel()
    job = viewModelScope.launch {
        try {
            data.value = someApiCall()
        } catch (e: Exception) {
            Logger.log(e)
        }
    }
}

在哪里

object Logger {
        
    fun log(e: Throwable?) {
        if (e != null) {
            AGConnectCrash.getInstance().recordException(e)
        }
    }
}

我認為您的輸入參數類型不正確。 你放的是字符串而不是堆棧信息。 建議輸入單據類型。 強行輸入字符串會導致系統崩潰。 並且在以后的版本中,會增加判斷保護機制。

在此處輸入圖像描述

有關詳細信息,請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM