gpt4 book ai didi

android - 如何在 Android 应用程序运行时在后台连续检查互联网连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:08 25 4
gpt4 key购买 nike

我想在我的 Android 应用程序运行时在后台持续检查互联网连接。我的意思是从申请开始到申请结束。我该怎么做?应该采取什么方法?

最佳答案

我知道我来晚了回答这个问题。但这里有一种在 Activity/Fragment 中持续监控网络连接的方法。

我们将使用网络回调来监控 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;
}

}

我们所有的工作都差不多完成了,我们只需要调用我们的 checkConnectivity(),即 Activity/Fragment 的 onResume() 中的方法

  @Override
protected void onResume() {
super.onResume();
checkConnectivity();
}

*在 onPause() 中取消注册 NetworkCallback,您的 Activity/Fragment 的方法 *

   @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 的每个类都需要监控网络!不要忘记取消注册!!!

关于android - 如何在 Android 应用程序运行时在后台连续检查互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com