进入页面先访问网络状态.返回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);
}
本文介绍了一种在Android应用中检测网络状态并利用EventBus进行组件间通信的方法。通过编写简单的网络状态检查函数,并结合EventBus实现跨页面传递网络状态信息,从而根据不同网络状况采取相应操作。
3133

被折叠的 条评论
为什么被折叠?



