在 Android 平台上,可以通过广播监听网络连接状态的变化。当网络连接状态发生变化时,系统会发送一条广播通知应用程序。
要监听网络断开的事件,可以注册一个广播接收器,并使用android.net.conn.CONNECTIVITY_CHANGE
作为过滤器,如下所示:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// 检测网络连接状态变化
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnectedOrConnecting()) {
// 网络连接已建立或正在建立
// TODO: 处理网络连接事件
} else {
// 网络连接已断开
// TODO: 处理网络断开事件
}
}
}
}
接下来,在合适的时机(例如应用程序的入口 Activity 的onResume
方法中),注册广播接收器:
public class MainActivity extends AppCompatActivity {
private NetworkChangeReceiver mNetworkChangeReceiver;
private IntentFilter mIntentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建广播接收器
mNetworkChangeReceiver = new NetworkChangeReceiver();
// 创建过滤器
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
// 注册广播接收器
registerReceiver(mNetworkChangeReceiver, mIntentFilter);
}
// ...
@Override
protected void onDestroy() {
super.onDestroy();
// 取消注册广播接收器
unregisterReceiver(mNetworkChangeReceiver);
}
}
这样,当网络连接状态发生变化时,NetworkChangeReceiver
的onReceive
方法会被调用,可以在该方法中处理网络断开的事件。
在 Android 平台上,可以使用广播接收器来监听网络断开事件。具体的步骤如下:
- 创建一个广播接收器类,并继承自
BroadcastReceiver
类。 - 在广播接收器类中重写
onReceive()
方法,在该方法中处理网络断开的逻辑。 - 在 AndroidManifest.xml 文件中注册该广播接收器,以便系统能够正常接收到网络断开事件。
以下是一个示例代码:
- 创建广播接收器类
NetworkChangeReceiver
:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// 网络连接可用
} else {
// 网络连接断开
}
}
}
}
- 在 AndroidManifest.xml 文件中注册该广播接收器(注意添加相应的权限):
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application ...>
...
<receiver
android:name=".NetworkChangeReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
</application>
当网络连接断开时,onReceive()
方法中的逻辑将会被执行。你可以根据需要在此处做出相应的处理。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/134883.html