1.需求场景
当需要获取数据时,先从本地的磁盘/内存缓存中获取所需数据,如果没有,才通过网络请求向服务器获取数据。我们可以使用操作符concat()和firstElement来实现。
2.具体实现
final String memoryCache = null;
final String diskCache = "从磁盘缓存中获取数据";
//检查内存缓存是否有该数据的缓存
Observable memory = Observable.create(new ObservableOnSubscribe() {
@Override
public void subscribe(ObservableEmitter e) throws Exception {
if (memoryCache != null) {
e.onNext(memoryCache);
} else {
e.onComplete();
}
}
});
//检查磁盘缓存是否有该数据的缓存
Observable disk = Observable.create(new ObservableOnSubscribe() {
@Override
public void subscribe(ObservableEmitter e) throws Exception {
if (diskCache !&