在 Android 中,onConfigurationChange
是一个用于处理设备配置更改(如屏幕方向、键盘可用性等)的方法。然而,这个方法并不会直接处理网络变化。要处理网络变化,你需要使用 ConnectivityManager
类。
以下是如何在 Android 应用中处理网络变化的步骤:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
NetworkChangeReceiver
的类,该类需要继承自 BroadcastReceiver
:import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
boolean isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnected();
if (isConnected) {
// 网络已连接,可以执行相关操作
} else {
// 网络未连接,可以执行相关操作
}
}
}
NetworkChangeReceiver
:<receiver android:name=".NetworkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
现在,每当网络状态发生变化时,NetworkChangeReceiver
的 onReceive
方法都会被调用,你可以在其中执行相应的操作。请注意,从 Android 7.0(API 级别 24)开始,CONNECTIVITY_CHANGE
广播的行为发生了变化,它不再在每次网络状态变化时触发。为了解决这个问题,你可以使用 ConnectivityManager.registerNetworkCallback()
方法来监听网络变化。