Android 错误处理后如何重用Kotlin协同程序?

Android 错误处理后如何重用Kotlin协同程序?,android,kotlin,kotlin-coroutines,Android,Kotlin,Kotlin Coroutines,错误处理后如何重用协同程序? 在我的代码中,当使用CoroutineExceptionHandler的coroutine出现任何错误时,我会重新创建一个新的作业和范围实例,这是可行的,我认为这不是一个好的选择,可能还有其他选择 fun getDashBoardData() { loadingStateLiveData.value = true scope.launch(scope.coroutineContext + CoroutineEx

错误处理后如何重用协同程序? 在我的代码中,当使用CoroutineExceptionHandler的coroutine出现任何错误时,我会重新创建一个新的作业和范围实例,这是可行的,我认为这不是一个好的选择,可能还有其他选择

    fun getDashBoardData() {
            loadingStateLiveData.value = true
            scope.launch(scope.coroutineContext + CoroutineExceptionHandler { _, e ->
                assetsBalanceLiveData.postValue(Resource.error(app.getString(R.string.no_connection), null))
                Log.e(TAG, "CoroutineExceptionHandler - ${e.message}")
                job = Job()
                scope = CoroutineScope(Dispatchers.Default + job)
                loadingStateLiveData.postValue(false)
            }) {
              // SUSPENDED FUN   
              assetsBalanceLiveData.postValue(DashboardRepository.getUserAssetsBalance())

              // SUSPENDED FUN    
              incomeGraphDataLiveData.postValue(DashboardRepository.getIncomeGraphData())
              loadingStateLiveData.postValue(false)
            }
        }

重新创造一份工作看起来不是最好的选择。您可以使用启动{..}或异步{..}函数启动新的协同程序,并使用普通的try/catch块处理异常。如果这还不够的话,一个监管者可以帮助确保父作业没有终止

您可以查看文档以了解更多详细信息