版权声明:本文为博主原创文章,未经博主允许不得转载。
这篇文章主要有两个部分,一个是activity中的断网广播处理,一个是fragment中的广播断网处理。
可能记得不是很正确,但是我一定要把它记录下来,以备自己以后的总结和回忆,不过这方法都是现在我在app中应用的,行的通的处理办法。
先来看一看,qq的。
车来了。
再来看一下,我们的。
其实这些都是大同小异的。只是加载的错误布局不一样而已。
一、activity中的断网广播处理:
我们需要ConnectivityManager,ConnectivityManager主要管理和网络连接相关的操作 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。
我们想访问网络状态,首先得添加权限,其中 NetworkInfo类则包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则能代表 连接成功与否状态。
定义网络广播:`
//广播
private ConnectivityManager mConnectivityManager;
private NetworkInfo netInfo;
//广播:网络判断操作
private BroadcastReceiver myNetReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
netInfo = mConnectivityManager.getActiveNetworkInfo();
if (netInfo != null && netInfo.isAvailable()) {
//网络连接
String name = netInfo.getTypeName();
if (netInfo.getType() == ConnectivityManager.TYPE_WIFI || netInfo.getType() == ConnectivityManager.TYPE_ETHERNET || netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
//3g网络
//清数据,对数据进行操作
mRefreshLayout.beginRefreshing();
}
} else {
//网络断开 展示网络提示布局
}
}
}
};`
进行动态注册与解绑
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_carfile_list_layout);
initView();
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(myNetReceiver, mFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (myNetReceiver != null) {
unregisterReceiver(myNetReceiver);
}
}
二、fragment中的断网处理:
它的使用方法,更activity的使用方法是差不多的,只是注册与绑定是在对应的不同生命周期中。
定义网络广播:
private ConnectivityManager mConnectivityManager;
private NetworkInfo netInfo;
private BroadcastReceiver myNetReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
netInfo = mConnectivityManager.getActiveNetworkInfo();
if (netInfo != null && netInfo.isAvailable()) {
String name = netInfo.getTypeName();
if (netInfo.getType() == ConnectivityManager.TYPE_WIFI || netInfo.getType() == ConnectivityManager.TYPE_ETHERNET || netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
mRefreshLayout.beginRefreshing();
}
} else {
}
}
}
};`
进行动态注册与解绑
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
getActivity().registerReceiver(myNetReceiver, mFilter);
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (myNetReceiver != null) {
getActivity().unregisterReceiver(myNetReceiver);
}
}
布局文件就不贴出来了!!!!!