进入页面先访问网络状态.返回true或false表示网络状态的有无,将这个值使用EventBus传给Fragment页面
首先需要导入依赖
compile 'org.greenrobot:eventbus:3.1.1'
加入权限,允许访问网络状态的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Mainactivity里面先调用访问网络状态的方法
/**
* 判断网络连接是否打开
* true打开.false未打开
*/
public static boolean isConnect(Context context) {
boolean flag = false;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null) {
flag = manager.getActiveNetworkInfo().isAvailable();
}
return flag;
}
//进入页面判断网络
boolean flag = isConnect(this);
if(flag){//如果有网
EventBus.getDefault().postSticky("true");
}else{//如果没网
EventBus.getDefault().postSticky("false");
}
fragment里面需要注册 eventbus,定义一个接受的事件,上面加注解,在销毁的时候取消注册,
//接收方需要注册
EventBus.getDefault().register(this);
//在接收的方法上需要加注解, 黏性为true,线程模式为主线程
@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
public void onM(String flag){
if (flag.equals("true")) {
Toast.makeText(getActivity(), "网络状态良好,访问网络数据", Toast.LENGTH_LONG).show();
//请求网络的数据
getData();
} else {
Toast.makeText(getActivity(), "无网络,查询数据库", Toast.LENGTH_LONG).show();
getFromDataBase();//从数据库中查数据
}
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}