#android #kotlin
Вопрос:
Это немного жутковатая проблема. Если я отлаживаю свое приложение, мой пользовательский интерфейс загружает данные адаптера, и я вижу просмотры карт, но если я не отлаживаю, я не могу видеть просмотры карт, например, данные находятся в потоке и не загружаются при создании пользовательского интерфейса.
Я был бы признателен за всю возможную помощь
Мой проект на GitHub
Комментарии:
1. Пожалуйста, разместите всю соответствующую информацию здесь вместо ссылок на внешний ресурс (включая ссылки на github).
2. Такие вещи, как это:
viewModelScope.launch(Dispatchers.IO)
плохая идея. Вам не нужно указывать диспетчера для вызова функции приостановки помещения. Функции приостановки не блокируются, поэтому их обычно не нужно вызывать у определенного диспетчера. И , запустив свою сопрограмму на другом диспетчере, отличном от используемого по умолчанию MainviewModelScope
, вы управляете свойством списка в фоновом потоке. Теперь вам нужно беспокоиться о своей активности или фрагменте, получающем доступ к списку, возможно, из другого потока.3. Проще всего избегать изменения любых свойств, которые являются общими для класса Activity/Fragment в любом диспетчере, кроме Main. Если вы изменяете их только в Main, вам никогда не придется беспокоиться о проблемах параллелизма.
4. Спасибо, я наконец решил эту проблему с помощью объектов LiveData и вызова наблюдателя в mainActivitiy, и это сработало, мне пришлось преобразовать метод getRoutes в viewmodel в переменную и не использовать ключевое слово suspend. Я не нашел четкой информации о том, в чем смысл использования suspend и диспетчеров. Теперь у меня есть немного больше информации! Спасибо!
Ответ №1:
Да, возможно, данные не загружаются при создании пользовательского интерфейса. Но для быстрого решения вы можете загрузить данные в предыдущем действии и использовать их в своем действии по желанию.