android - rxjava 条件判断
本文介绍了android - rxjava 条件判断的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我想实现这样一个功能,用户点击获取数据库数据,若数据库有这个数据,则直接显示本地的,若数据库没有这个数据,就从服务器请求再显示出来。
请问一下用rxjava要怎么写呢?
解决方案
1.先把功能函数写出来.
private static Object loadFromCache(String key) {
//....本地缓存加载,如果加载失败返回 null
}
private static Object loadFromServer(String key) {
//....通过网络加载,返回数据
Object obj = ....
saveToCache(key, obj);//保存到本地缓存
return obj;
}
2.将阻塞方法转为RxJava的写法
private static Observable<Object> rxLoadFromCache(String key) {
return Observable.fromCallable(() -> loadFromCache(key));
}
private static Observable<Object> rxLoadFromServer(String key) {
return Observable.fromCallable(() -> loadFromServer(key));
}
3.合并到一起
public static Observable<Object> rxLoad(String key) {
return Observable.concat(
rxLoadFromCache(key),
rxLoadFromServer(key)
).filter(obj -> obj != null)
.take(1);
}
4.调用最后的方法
rxLoad(key)
.subscribeOn(Schedulers.io())
.subscribe(obj->{
System.out.println(obj);
});
这篇关于android - rxjava 条件判断的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文