我知道我回答这个问题已经晚了。
但这里有一种在 Activity/Fragment 中持续监视网络连接的方法。
我们将使用网络回调来监视活动/片段中的连接
首先,在类中声明两个变量
// to check if we are connected to Network
boolean isConnected = true;
// to check if we are monitoring Network
private boolean monitoringConnectivity = false;
接下来,我们将编写网络回调方法
private ConnectivityManager.NetworkCallback connectivityCallback
= new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
isConnected = true;
LogUtility.LOGD(TAG, "INTERNET CONNECTED");
}
@Override
public void onLost(Network network) {
isConnected = false;
LogUtility.LOGD(TAG, "INTERNET LOST");
}
};
现在,既然我们已经编写了回调,我们现在将编写一个方法来监视我们的网络连接,在这个方法中,我们将注册我们的 NetworkCallback。
// Method to check network connectivity in Main Activity
private void checkConnectivity() {
// here we are getting the connectivity service from connectivity manager
final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(
Context.CONNECTIVITY_SERVICE);
// Getting network Info
// give Network Access Permission in Manifest
final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
// isConnected is a boolean variable
// here we check if network is connected or is getting connected
isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
if (!isConnected) {
// SHOW ANY ACTION YOU WANT TO SHOW
// WHEN WE ARE NOT CONNECTED TO INTERNET/NETWORK
LogUtility.LOGD(TAG, " NO NETWORK!");
// if Network is not connected we will register a network callback to monitor network
connectivityManager.registerNetworkCallback(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build(), connectivityCallback);
monitoringConnectivity = true;
}
}
我们所有的工作都快完成了,我们只需要调用我们的 Activity/Fragment 的 onResume() 中的 checkConnectivity() 方法
@Override
protected void onResume() {
super.onResume();
checkConnectivity();
}
*在 Activity/Fragment 的方法 onPause() 中取消注册 NetworkCallback *
@Override
protected void onPause() {
// if network is being moniterd then we will unregister the network callback
if (monitoringConnectivity) {
final ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.unregisterNetworkCallback(connectivityCallback);
monitoringConnectivity = false;
}
super.onPause();
}
就是这样,只需添加此代码,其中您的 Activity/Fragment 的每个类都需要监视网络!并且不要忘记取消注册它!