两种方式:Retrofit的NetworkUtils,blankj的NetworkUtils。
1.在使用Retrofit2.0发http协议的时候,在发之前判断一下就行了
/**
* 先判断网络连接状态和网络是否可用,放在回调那里好呢,还是放这里每次请求都去判断下网络是否可用好呢?
* 如果放在请求前面太耗时了,如果放回掉提示的速度慢,要10秒钟请求超时后才提示。
* 最后采取的方法是判断网络是否连接放在外面,网络是否可用放在回掉。
*/
if (!NetworkUtils.isConnected()) {
ToastUtils.showShortToast("网络连接已断开");
if (target != null) {
target.setState(AppConstants.STATE_ERROR);
}
return;
}
2. blankj,它是一个三方开发工具包有很多常用的开发方法,如果需要实时性,比如界面上有网络是否连接的UI图标,时刻显示当前的网络连接状态,但是时间不用特别精确
一.导入blankj:
implementation 'com.blankj:utilcode:1.3.6'
二.使用blankj提供的NetworkUtils,在比如主活动中开启一个线程,线程死循环间隔若干秒监听判断就行了
private class StateThread extends Thread {
@Override
public void run() {
super.run();
while (true) {
try {
Thread.sleep(6000);
if (NetworkUtils.isConnected()) {
//XX逻辑
}
} catch (Interrup