Мой пользовательский интерфейс не отображает данные списка массивов адаптера, если я не выполняю отладку

#android #kotlin

Вопрос:

Это немного жутковатая проблема. Если я отлаживаю свое приложение, мой пользовательский интерфейс загружает данные адаптера, и я вижу просмотры карт, но если я не отлаживаю, я не могу видеть просмотры карт, например, данные находятся в потоке и не загружаются при создании пользовательского интерфейса.

Я был бы признателен за всю возможную помощь

Мой проект на GitHub

https://github.com/albertbuigues/Touristics

Комментарии:

1. Пожалуйста, разместите всю соответствующую информацию здесь вместо ссылок на внешний ресурс (включая ссылки на github).

2. Такие вещи, как это: viewModelScope.launch(Dispatchers.IO) плохая идея. Вам не нужно указывать диспетчера для вызова функции приостановки помещения. Функции приостановки не блокируются, поэтому их обычно не нужно вызывать у определенного диспетчера. И , запустив свою сопрограмму на другом диспетчере, отличном от используемого по умолчанию Main viewModelScope , вы управляете свойством списка в фоновом потоке. Теперь вам нужно беспокоиться о своей активности или фрагменте, получающем доступ к списку, возможно, из другого потока.

3. Проще всего избегать изменения любых свойств, которые являются общими для класса Activity/Fragment в любом диспетчере, кроме Main. Если вы изменяете их только в Main, вам никогда не придется беспокоиться о проблемах параллелизма.

4. Спасибо, я наконец решил эту проблему с помощью объектов LiveData и вызова наблюдателя в mainActivitiy, и это сработало, мне пришлось преобразовать метод getRoutes в viewmodel в переменную и не использовать ключевое слово suspend. Я не нашел четкой информации о том, в чем смысл использования suspend и диспетчеров. Теперь у меня есть немного больше информации! Спасибо!

Ответ №1:

Да, возможно, данные не загружаются при создании пользовательского интерфейса. Но для быстрого решения вы можете загрузить данные в предыдущем действии и использовать их в своем действии по желанию.