在一个fragment中进行网络监听
先创建一个网络监听类
class NetworkChangeReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()){
//网络正常的情况下 执行相关操作
onHaveNetListener.onHasNet();
}else{
onNoNetListener.onNoNet();
}
}
public interface OnHaveNetListener {
void onHasNet();
}
public interface OnNoNetListener {
void onNoNet();
}
public void setOnNoNetListener(OnNoNetListener listener) {
onNoNetListener = listener;
}
public void setOnHaveNetListener(OnHaveNetListener listener) {
onHaveNetListener = listener;
}
private OnNoNetListener onNoNetListener;
private OnHaveNetListener onHaveNetListener;
}
以下为实际使用时要添加的代码
// 监听网络状态
private IntentFilter intentFile = new IntentFilter();
private NetworkChangeReciver network = new NetworkChangeReciver();
// 在onCreateView 中添加 注册广播监听
intentFile.addAction("android.net.conn.CONNECTIVITY_CHANGE");
Objects.requireNonNull(getActivity()).registerReceiver(network, intentFile);
// 接下来在需要的方法中添加事件监听(例如initView()),对于不同的网络状态需要做的事
network.setOnHaveNetListener(new NetworkChangeReciver.OnHaveNetListener() {
@Override
public void onHasNet() {
LogUtil.d("-------evaluate 网络正常");
haveNetDo();
});
network.setOnNoNetListener(new NetworkChangeReciver.OnNoNetListener() {
@Override
public void onNoNet() {
LogUtil.d("-------evaluate 网络失败");
noNetDo();
});
// 重写onDestroy()
@Override
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(network);
}
参考文章
link 关于android的广播机制里面的网络状态监听 (Fragment实现)