Posted on Leave a comment

Loading data from few sources by rxjava

[code language=”java”]
Observable<Data> memory = …;
Observable<Data> disk = …;
Observable<Data> network = …;
// Retrieve the first source with data
Observable<Data> source = Observable
.concat(memory, disk, network)
.first();
[/code]

Save data to cache

[code language=”java”]
Observable<Data> networkWithSave = network.doOnNext(data -> {
saveToDisk(data);
cacheInMemory(data);
});
Observable<Data> diskWithCache = disk.doOnNext(data -> {
cacheInMemory(data);
});
[/code]

Update data

[code language=”java”]
Observable<Data> source = Observable
.concat(memory, diskWithCache, networkWithSave)
.first(data -> data.isUpToDate());
[/code]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.