RxAndroid 应用(二)(简易天气App)
来源:互联网 发布:人工智能利弊英语作文 编辑:程序博客网 时间:2024/05/16 08:10
RxAndroid 应用(一)(简易天气App)
RxAndroid 应用(二)(简易天气App)
RxAndroid 应用(三)(简易天气App之Observable内存泄露)
RxAndroid 应用(四)(简易天气App之RxBus)
RxAndroid 应用(一)(简易天气App) 已经基本介绍了如何使用RxAndroid,这篇主要解决上篇遗留下的问题
”在Activity中分别调用了获取天气数据和城市列表的方法,那么问题来了,如果取数据的时候显示了process Dialog, 我该在什么时候结束呢,写flag判断?“
最直接的最暴力的方法就是直接在一个方法里同步调用两个接口,那使用RxJava怎么实现呢?
这个问题可以使用RxJava的Merge操作符实现,故名思议就是将两个接口Observable合成一个,废话不说直接上代码:
@Override public void getPlaceAndWeatherData(String place) { mMainView.showProgress(); PlaceRepository repository = new PlaceRepository(); Context context = BaseApplication.getInstance(); Observable placeObservable = repository.getPlaceList(context); Observable weatherObservable = ServiceManager.getInstance().getApiService().getWeatherInfo(place, Constants.BAIDU_AK); Observable.merge(placeObservable, weatherObservable) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<Object>() { @Override public void onCompleted() { mMainView.hideProgress(); } @Override public void onError(Throwable e) { mLogger.error(e.getMessage(), e); mMainView.hideProgress(); } @Override public void onNext(Object obj) { if (obj instanceof List) { mMainView.setupPlaceData((List<Place>) obj); } else if (obj instanceof WeatherResponse) { mMainView.setupWeatherData((WeatherResponse) obj); } } }); }
这样就很巧妙的解决了前面的问题。
如果这样的代码看着还不舒服,你完全可以使用Lambda,这样可以让代码看起来少之又少,不过Android studio目前还不支持Lambda,如果想要使用请安装插件RetroLambda 并且JDK 使用JDK 8以上版本.
源码地址:https://github.com/mickyliu945/CommonProj
1 1
- RxAndroid 应用(二)(简易天气App)
- RxAndroid 应用(一)(简易天气App)
- RxAndroid 应用(四)(简易天气App之RxBus)
- RxAndroid 应用(三)(简易天气App之Observable内存泄露)
- Android实践之简易天气(二)
- "晴天"天气app的开源库逐步学习(二)
- #趣米杯#码农天气--码农自己的天气APP(二)
- RxAndroid: 高级使用(二)
- 【MVP+Retrofit+RxAndroid+dagger2】读易读应用框架笔记(二)网络请求与回调篇
- Android实践之简易天气(一)
- RxJava(RxAndroid)(二)(笔记)
- RxAndroid响应式开发(二)
- RxAndroid的环境搭建(二)
- 天气类APP产品微体验(墨迹天气、中央天气预报、雅虎天气、2345天气王)
- APP(简易便签)
- 天气APP实战二 ( 创建表和包的结构)
- 天气项目习得(二)
- 简易天气隐私策略
- iOS app内测TestFlight
- XHProf PHP 分层分析器 php 效率测试 php 优化
- Java CookBook Learning Day4th--HTTP (by Tim O'Brien)
- 【SQL 编程你也行】count函数(SQL Server 2005、2008版本 over partition by)
- android开发游记:listview下拉刷新和上拉加载的实现
- RxAndroid 应用(二)(简易天气App)
- mysql 执行状态分析 show processlist
- Android自动化测试 - Monkey & Monkeyrunner
- Log4j-设计原理
- Javascript_备忘录6
- 三分切向快速排序
- PostgreSQL数据库配置文件之postgresql.conf全部参数详解
- UIView - 图层CALayer(裁边 & 改边角 & 加阴影)
- JAVA_Android开发官网