//自定义广播类
public class NetBroadcastReceiver extends BroadcastReceiver {
private NetConnectedListener netConnectedListener;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
//WIFI和移动网络均未连接
netConnectedListener.netContent(false);
} else {
//WIFI连接或者移动网络连接
netConnectedListener.netContent(true);
}
}
public void setNetConnectedListener(NetConnectedListener netConnectedListener) {
this.netConnectedListener = netConnectedListener;
}
public interface NetConnectedListener {
void netContent(boolean isConnected);
}
}
private int count=0;
@Override
public void initData() {
//注册广播,在打开app无网络时,连接网络后自动请求数据,实时加载
NetBroadcastReceiver receiver = new NetBroadcastReceiver();
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);
receiver.setNetConnectedListener(new NetBroadcastReceiver.NetConnectedListener() {
@Override
public void netContent(boolean isConnected) {
if (isConnected) {
count+=1;
}else {
ToastUtils.showShort("请开启网络!");
}
if (count == 1) {
viewModel.setData();
}
}
});
}
//释放广播
protected void onStop() {
super.onStop();
if (receiver != null) {
unregisterReceiver(receiver);
}
}