#android #kotlin #viewmodel
Вопрос:
У меня есть 2 действия A и B. Действие B возвращает некоторые данные в действие A, которое используется для создания a OneTimeWorkRequest
, чтобы сделать что-то еще. Я использую ViewModel для наблюдения за изменениями в состоянии WorkInfo для этого запроса. Например:
Активность.кт
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
myViewModel =
viewModel<MyViewModel>().apply {
observe(requestWorkInfo) {
println(it.state)
// expects to print: ENQUEUED, RUNNING, SUCCEEDED
}
}
Фрагмент в действии A должен navigateUp()
вернуться к предыдущему фрагменту после того, как он получит данные из Действия B и создаст запрос. Например:
Мой фрагмент.кт
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
myViewModel.createOneTimeRequest(intent)
this.findNavController().navigateUp()
}
Проблема, с которой я сталкиваюсь, заключается в том, что В ОЧЕРЕДИ не печатается, когда я это делаю, — печатаются только ЗАПУЩЕННЫЕ и УСПЕШНЫЕ. Если я удалю this.findNavController().navigateUp()
, все три состояния будут напечатаны, как и ожидалось. Мой вопрос в том, почему в ОЧЕРЕДИ не наблюдается, когда я navigateUp()
после создания запроса? Существует ли основная проблема параллелизма, связанная с этим? Любое понимание будет оценено по достоинству.
Комментарии:
1. Возможно, вы не используете общую модель представления во фрагменте
2. Я. У меня есть только одна модель просмотра.