Я пытаюсь реализовать рекомендованную архитектуру от Google, и в уроке они показывают эту диаграмму:
Итак, у меня есть MainActivity иКогда приложение запускается, оно должно пойти и получить некоторые данные из Интернета.Я делаю эти сетевые операции в репозитории.Теперь моя проблема в том, что я не знаю, как правильно общаться между действиями и хранилищем.Например, MainActivity запускается и сразу отображает круговой индикатор выполнения, пока репозиторий извлекает данные.Как я могу остановить анимацию в MainActivity, как только данные будут вставлены в базу данных?Я думаю, что я мог бы позвонить observe()
на LiveData
и ждать onChanged()
.Есть ли лучший подход?Что делать, если нет новых данных?Тогда onChanged()
не будет вызван ...
Возможно, я мог бы отправить намерение из репозитория в MainActivity, когда нет данных, поэтому MainActivity знает, что должно остановить анимацию, и если оно не получает намерение, то этопросто ждет onChanged()
?
Полагаю, мне просто не нравится метод onChanged()
, потому что я никогда не буду уверен в операции, которой он соответствует.Возможно, до поступления данных из сети были вставлены какие-то другие данные, которые сработали onChanged()
, что затем остановило бы анимацию загрузки до того, как это должно было быть.