代码不会继续在观察者内部启动协同程序

时间:2020-08-03 10:32:06

标签: android kotlin-coroutines

我有以下方法-

private fun handleNewFriend(user: UserModel) {
        lifecycleScope.launch {
            withContext(Dispatchers.Default) {
                val selfUsername = profileSharedPrefs.getString(USER_REGISTERED_EMAIL, "")!!
                friendsViewModel.addUserFriend(UserFriendsModel(selfUsername, user.id))
            }
            friendsViewModel.addUsersFriendsErrorResults.observeOnce(requireActivity(), Observer { error ->
                error?.let {
                    Toast.makeText(requireContext(), error.plus(" ").plus(getString(R.string.please_try_again)), Toast.LENGTH_LONG).show()
                    return@Observer
                }
                launch{
                    withContext(Dispatchers.Default) {
                        friendsViewModel.insertNewFriend(user)
                    }
                    navController.popBackStack()
                }
            })
        }
    }

addUserFriend()将数据添加到Firestore数据库中。

addUsersFriendsErrorResults是我从回调中观察到的实时数据结果,为我提供了一个可空字符串,表示可选错误。

从实时数据中获取结果后,我将打开一个新的协程,这会导致问题-只有第二次单击按钮,并且函数到达该位置后,代码实际上才在启动内部继续{}最后。

为什么会这样?什么会在第一次运行时停止我的代码?

0 个答案:

没有答案