代码之家  ›  专栏  ›  技术社区  ›  A J

在过帐值协同路由时使用DefaultDispatcher-worker-2

  •  0
  • A J  · 技术社区  · 5 年前

    我的视图模型如下所示:

    class BlogListActivityViewModel @ViewModelInject constructor(
    private val blogRepository: BlogRepository,
    private val context: Application,
    @IoDispatcher private val ioDispatcher: CoroutineDispatcher
    ) : AndroidViewModel(context) {
    
    var blogDeleteLiveData = MutableLiveData<Resource<DeleteResponse>>()
    
    
    fun deleteBlog(itemId: Int) {
        viewModelScope.launch(ioDispatcher) {
            blogDeleteLiveData.postValue(Resource.loading())
            try {
                val deleteResponse = async { blogRepository.deleteBlog(itemId) }
                blogDeleteLiveData.postValue(Resource.success(deleteResponse.await()))
            } catch (e: Exception) {
                blogDeleteLiveData.postValue(Resource.error(message = context.getString(R.string.unable_to_load_blog)))
            }
        }
    }
    }
    

    blogListActivityViewModel.blogDeleteLiveData.observe(this, Observer { resource ->
            val sweetDialog = SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE)
            sweetDialog.titleText = "Deleting"
            sweetDialog.setCancelable(false)
    
            resource?.let { resource ->
                when (resource.status) {
                    Resource.Status.SUCCESS -> {
                        blogListAdapter.deleteBlog(deletedBlog)
    
                        sweetDialog.changeAlertType(SweetAlertDialog.SUCCESS_TYPE)
                        sweetDialog.contentText = "Successfully deleted !!"
                        sweetDialog.titleText = "Congratulation"
                    }
                    Resource.Status.ERROR -> {
                        sweetDialog.changeAlertType(SweetAlertDialog.ERROR_TYPE)
                        sweetDialog.contentText = resource.message
                        sweetDialog.titleText = "Oops Something Wrong"
                    }
                    Resource.Status.LOADING -> {
                        deleteDialog.dismissWithAnimation()
    
                        sweetDialog.changeAlertType(SweetAlertDialog.PROGRESS_TYPE)
                        sweetDialog.contentText = "Please wait while deleting..."
                        sweetDialog.show()
                    }
                }
            }
        })
    blogListActivityViewModel.deleteBlog(blog.id)
    

    但我一直在变

    致命异常:DefaultDispatcher-worker-2

    0 回复  |  直到 5 年前