【发布时间】:2018-05-23 12:18:30
【问题描述】:
我正在尝试从 android 架构组件中实现新的分页库。基本功能工作正常,但我需要为loadRange() 或loadAfter() 添加重试功能。如果发生网络错误或设备离线,我需要重试这些。我已经尝试过dataSource.invalidate(),它会丢弃整个数据源,这似乎是一种浪费。有没有办法做到这一点?
这是我的代码:
public class MyDataSource extends PositionalDataSource<Item> {
...
@Override
public void loadInitial(@NonNull LoadInitialParams params, @NonNull LoadInitialCallback<Item> callback) {
ArrayList<Item> items = executeCall(1, params.requestedLoadSize);
if (items != null) {
callback.onResult(items, 0, totalCount);
} else {
callback.onResult(new ArrayList<Item>(), 0);
}
}
@Override
public void loadRange(@NonNull LoadRangeParams params, @NonNull LoadRangeCallback<Item> callback) {
ArrayList<Item> items = executeCall(params.startPosition, params.loadSize);
if (items != null) {
callback.onResult(items);
} else {
callback.onResult(new ArrayList<Item>());
}
}
...
}
【问题讨论】:
-
看看google-samples。您可以保存上一次调用的引用,并通过调用重试函数来调用它。
-
谢谢,我最终使用了这样的东西。
标签: android android-architecture-components android-paging