本人之前处理这个事情,网上很多的demo例子,都是在activity里的,本人一直想在appliation中设置,结果很麻烦弄了很多类还是会有bug和crash,想在全局设置判断网络费了一会功夫,网上有大神说可以利用广播实施监听
下面分享自己的例子给大家,没有那么麻烦,很简单
首先在Mainactivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
setBreoadcast();
}
/**
* 设置网络监听
*/
private void setBreoadcast() {
BroadcastReceiver receiver=new NetBroadCastReciver();
IntentFilter filter=new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);
}
然后在一个广播的类里
public class NetBroadCastReciver extends BroadcastReceiver {
/**
* 只有当网络改变的时候才会 经过广播。
*/
private MyDialog dialog;
private View view;
@Override
public void onReceive(Context context, Intent intent) {
//此处是主要代码,
//如果是在开启wifi连接和有网络状态下
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (NetworkInfo.State.CONNECTED == info.getState()) {
//连接状态 处理自己的业务逻辑
EventBus.getDefault().post(new BroadCastEvent(SharePrefrence.BooleanBroadCast));
} else {
Toast.makeText(context, "网络链接失败", Toast.LENGTH_SHORT).show();
context.startActivity(new Intent(context, BooleanNetWork.class));
}
}
}
}