在Android应用开发过程中,网络状态检测功能直接影响用户体验。通过系统级API ConnectivityManager,开发者可获取当前网络连接的实时状态。
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
获取系统服务实例后,调用getActiveNetworkInfo()方法可获取当前活跃网络信息对象。当网络信息对象不为空且处于连接状态时,表明设备已接入可用网络。
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnected();
此方法可准确判断设备是否已建立有效网络连接,包含但不限于WiFi、移动数据等连接方式。返回值为true时表示设备具备网络访问能力。
通过NetworkInfo对象的getType()方法可进一步判断具体连接类型:
在AndroidManifest.xml中必须声明网络状态访问权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
实际开发中需注意网络状态监听的生命周期管理,建议在Activity的onResume方法中注册状态监听,并在onPause时及时注销。
频繁查询网络状态会增加设备耗电量,建议采用以下优化策略:
需特别注意处理以下异常情况:
异常类型 | 处理方案 |
---|---|
SecurityException | 检查权限声明是否完整 |
NullPointerException | 添加空对象判断 |
NetworkOnMainThreadException | 使用异步线程处理 |