在Rxjava+Retrofit 2中检查网络连接和显示加载框
来源:互联网 发布:超星泛雅网络课程 编辑:程序博客网 时间:2024/06/06 08:46
显示隐藏加载框的功能大家可以看我的这篇文章深入理解RxJava的Side Effect Methods
上篇讲到显示隐藏加载框我们用的RxJava的doOnSubscribe()和doOnTerminate()。这里我们检查网络连接同样是要在发送网络请求前检查,能不能也在doOnSubscribe()里检查呢,答案是:不能!
为什么呢?因为doOnSubscribe()发生在subscribe()之前,所以假如在doOnSubscribe()中检查没有网络的时候unsubscribe()的话,并不起作用。
然后,我们再来看源码中的注释,我发现Subscriber的onStart()方法是在Subscriber and Observable已经建立了连接,但是Observable还没有发射数据的时候调用的,符合我们的场景。
/** * This method is invoked when the Subscriber and Observable have been connected but the Observable has * not yet begun to emit items or send notifications to the Subscriber. Override this method to add any * useful initialization to your subscription, for instance to initiate backpressure. */ public void onStart() { // do nothing by default }
还有Subscriber中的unsubscribe()方法,它可以在onCompleted方法调用之前,取消中断掉我们的订阅即subscribe。
/** * Stops the receipt of notifications on the {@link Subscriber} that was registered when this Subscription * was received. * <p> * This allows unregistering an {@link Subscriber} before it has finished receiving all events (i.e. before * onCompleted is called). */ void unsubscribe();
所以要想实现在发送网络请求的时候检查网络连接,我们只需自定义一个NetCheckerSubscriber,如下:
public abstract class NetCheckerSubscriber<T> extends Subscriber<T> { private Context context; public NetCheckerSubscriber(Context context) { this.context = context; } @Override public void onStart() { super.onStart(); if (!new DeviceUtils(context).isHasNetWork()) { if (!isUnsubscribed()) { unsubscribe(); } Toast.makeText(context, "请检查网络连接后重试!", Toast.LENGTH_SHORT).show(); } }}
在onStart方法中检查网络连接,没有网络的话便取消订阅。
Over ,that is all,Thank you!
0 0
- 在Rxjava+Retrofit 2中检查网络连接和显示加载框
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- Rxjava和Retrofit网络封装
- RxJAVA和Retrofit在安卓中网络请求使用实例
- rxjava 和retrofit 结合使用 请求网络
- 在WebService中使用Retrofit+RxJava
- RXJava+Retrofit网络请求
- RecyclleView使用RxJava与Retrofit网络加载Fresco
- Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(一)
- Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(二)
- RxJava+Retrofit+OkHttp组合在网络请求中的简单配置
- Retrofit和Rxjava配合使用加载购物车
- Android Rxjava和retrofit
- Rxjava和Retrofit相结合
- 初识RxJava和Retrofit
- rxjava和retrofit结合
- Retrofit和RxJava
- 使用 RxJava 和 Retrofit
- 图片像素与色彩模式
- ```C#学习(五)···
- JavaWeb学习总结(十七)——JSP中的九个内置对象
- voc-release5在window下编译总结
- JAVA中String的“==”和equals()浅析
- 在Rxjava+Retrofit 2中检查网络连接和显示加载框
- OPENCV入门教程四:imread函数读入图像
- POJ-1258 Agri-Net 最小生成树(MST)
- 9.fork函数和父子进程共享文件
- Java 两个整数相除保留两位小数,将小数转化为百分数
- 10009---压力测试之badboy和Jmeter的简单使用方法
- 字符串包含
- HDU 1846 Bash博弈
- Android----------短信消息提醒(Notification)