Android LiveData вызывает в пользовательском интерфейсе "Fla sh" - PullRequest
0 голосов
/ 14 июля 2020

Мой текущий Android Приложение использует LiveData для отображения элементов в списке RecyclerView.

Мои данные хранятся в базе данных Room и извлекаются с помощью этого Dao метода

@RawQuery(observedEntities = [MyDO::class])
fun fetch(query: SupportSQLiteQuery): DataSource.Factory<Int, MyDO>

Я использую PagedListAdapter со следующей связанной PagedList Config

companion object {
    val PAGED_LIST_CONFIG = PagedList.Config.Builder()
        .setEnablePlaceholders(false)
        .setInitialLoadSizeHint(60)
        .setPrefetchDistance(20)
        .setPageSize(20)
        .build()
}

База данных My Room заполняется через вызовы API на удаленный сервер, который извлекает 200 элементов за один вызов.

Метод onChanged в моем Activity вызывается каждый раз, когда я вставляю страницу из 200 элементов в базу данных.

Метод onChanged всегда получает те же 60 элементов.

Я бы понял, что onChanged срабатывает, если он каждый раз получает разные элементы.

Также, как только все элементы были получены с удаленного сервера, список находится в верхней части элементов.

Что мне не хватает в моем понимании LiveData и PagedList s

Почему срабатывает onChanged, но я не получаю измененные элементы, что приводит к тому, что элементы списка «мигают» на каждой вставке страницы?

...