/**
* 描述:网络状态监听handler
* 作者:jupiter008
*/
public class NetStatusHandler extends Handler {
private static final String TAG = "NetStatusHandler";
public static final int WHAT_CHECK = 1001;
public static final int WHAT_UPDATE = 1002;
private final WeakReference<AppCompatActivity> mActivity;
public NetStatusHandler(Looper looper, AppCompatActivity activity) {
super(looper);
this.mActivity = new WeakReference<>(activity);
}
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case WHAT_CHECK:
checkHost();
break;
case WHAT_UPDATE:
AppCompatActivity activity = mActivity.get();
if (activity != null) {
boolean available = msg.arg1 == 0; // 表示网络可用
Log.e(TAG, "available = " + available);
sendEmptyMessageDelayed(WHAT_CHECK, 5 * 1000L);
} else {
Log.e(TAG, "warning: 弱引用对象已经被回收");
}
break;
}
}
// 检查能否连的上百度,注意要放在线程中
private void checkHost() {
new Thread(() -> {
try {
URL url = new URL("http://www.baidu.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(3 * 1000);
connection.connect();
int responseCode = connection.getResponseCode();
Message msg = new Message();
msg.what = WHAT_UPDATE;
msg.arg1 = responseCode;
sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
}
android判断网络是否可用
最新推荐文章于 2024-01-06 14:21:44 发布
关键词由CSDN通过智能技术生成