【发布时间】:2019-03-25 17:11:39
【问题描述】:
错误处理后如何重用协程? 在我的代码中,当协程(使用 CoroutineExceptionHandler)出现任何错误时,我会重新创建一个新的作业和范围实例,它可以正常工作,我认为这不是一个好的选择,也许还有另一种选择
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)
}
}
【问题讨论】:
标签: android kotlin kotlin-coroutines