/**
* 描述:网络状态监听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判断网络是否可用
最新推荐文章于 2023-09-15 09:13:54 发布
本文介绍了一个网络状态监听Handler类,它通过检查百度连接并使用弱引用管理Activity实例,确保在网络变化时及时更新。
958

被折叠的 条评论
为什么被折叠?



