Android – Компоненты Archives PageList

Поэтому я использую Paging Library for Room, и я создаю ItemKeyedDataSource который в основном запрашивает базу данных для данных, используя key для извлечения следующих данных. Моя проблема в том, что я не знаю, как правильно работать с обновлениями данных. Как я понимаю из документации, каждый раз, когда происходит обновление, необходимо создать новый источник данных.

Я делаю что-то вроде этого:

 private fun startLoad() { val oldIsFirstLoad = this.isFirstLoad if (!this.isFirstLoad) { callback.isRefreshing(true) this.latestDataSource.invalidate() } else { this.isFirstLoad = false } this.latestDataSource = dataSourceFactory.create() val builder = PagedList.Builder(this.latestDataSource, PagedList.Config.Builder().apply { setEnablePlaceholders(false) setPageSize(LOAD_BATCH) }.build() ) .setMainThreadExecutor({ mainHandler.post(it) }) .setBackgroundThreadExecutor(diskExecutor) diskExecutor.execute { val list: PagedList<RecordGraphRowItem> = builder.build() mainHandler.post { callback.onDataReceived(list, oldIsFirstLoad) if (!oldIsFirstLoad) { callback.isRefreshing(false) } } } } 

Каждый раз, когда я обнаруживаю изменение базы данных в этой таблице, я снова вызываю эту функцию. Но я не уверен, что это правильный способ сделать это. Любая обратная связь будет оценена. благодаря