Код: Выделить всё
@Query("SELECT * FROM posts WHERE subreddit = :subreddit ORDER BY indexInResponse ASC")
fun postsBySubreddit(subreddit : String) : DataSource.Factory
он станет недействительным при обновлении определенных таблиц :
Код: Выделить всё
mObserver = new InvalidationTracker.Observer(tables) {
@Override
public void onInvalidated(@NonNull Set tables) {
invalidate();
}
};
db.getInvalidationTracker().addWeakObserver(mObserver);
Код: Выделить всё
class StatusDataSource() : PageKeyedDataSource() {
// additional code, not my expected
init {
db.invalidationTracker.addObserver(object : InvalidationTracker.Observer("statuses") {
override fun onInvalidated(tables: MutableSet) {
invalidate()
}
})
}
override fun loadInitial(params: LoadInitialParams, callback: LoadInitialCallback) {
val data = dao.loadInitial(path, params.requestedLoadSize)
if (data.isEmpty()) {
callback.onResult(data, null, null)
} else {
callback.onResult(data, null, data.last().id)
}
}
// additional code, not my expected
override fun isInvalid(): Boolean {
db.invalidationTracker.refreshVersionsAsync()
return super.isInvalid()
}
}
Код: Выделить всё
@MainThread
override fun onZeroItemsLoaded() {
helper.runIfNotRunning(PagingRequestHelper.RequestType.INITIAL) {
webservice.fetch_from_path(path = path, count = networkPageSize, id = uniqueId).enqueue(createWebserviceCallback(it))
}
}
Нужно ли добавлять приведенный выше дополнительный код, чтобы просмотреть таблицу «статусы» и сделать источник данных недействительным?
Но это НЕ эффективный способ… и что еще хуже, когда загруженные данные, recyclerView не может сохраняться в своей позиции прокрутки (внизу), но прокручивается до некоторой позиции. Судя по всему, этот метод аннулирования не может работать должным образом с pagedList
Подробнее здесь: https://stackoverflow.com/questions/484 ... lback-call
Мобильная версия