| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package com.xzjmyk.pm.activity;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.database.Observable;
- import android.net.ConnectivityManager;
- import android.util.Log;
- import com.xzjmyk.pm.activity.NetWorkObservable.NetWorkObserver;
- import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
- public class NetWorkObservable extends Observable<NetWorkObserver> {
- public static interface NetWorkObserver {
- public void onNetWorkStatusChange(boolean connected);
- }
- private Context mContext;
- private ConnectivityManager mConnectivityManager;
- private boolean mIsNetWorkActive;// 当前网络是否连接上
- private boolean mRegisted;// 是否注册了广播
- NetWorkObservable(Context context) {
- mContext = context;
- // 获取程序启动时的网络状态
- mConnectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-
- mIsNetWorkActive = CommonUtil.isNetWorkConnected(mContext);
- //isGprsOrWifiConnected();
- if (AppConfig.DEBUG) {
- Log.d(AppConfig.TAG, "mIsNetWorkActive:" + mIsNetWorkActive);
- }
- // 注册网络监听广播
- IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
- mContext.registerReceiver(mNetWorkChangeReceiver, intentFilter);
- mRegisted = true;
- }
- private boolean isGprsOrWifiConnected() {
- // NetworkInfo gprs = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
- // NetworkInfo wifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- // boolean isConnectedGprs = gprs != null && gprs.isConnected();
- // boolean isConnectedWifi = wifi != null && wifi.isConnected();
- return CommonUtil.isNetWorkConnected(MyApplication.getInstance());
- }
- private BroadcastReceiver mNetWorkChangeReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (!intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
- return;
- }
- final boolean isConnected = isGprsOrWifiConnected();
- if (mIsNetWorkActive != isConnected) {// 和之前的状态不同
- mIsNetWorkActive = isConnected;
- notifyChanged(mIsNetWorkActive);
- }
- }
- };
- public void notifyChanged(boolean connected) {
- synchronized (mObservers) {
- for (int i = mObservers.size() - 1; i >= 0; i--) {
- mObservers.get(i).onNetWorkStatusChange(connected);
- }
- }
- }
- public void release() {
- if (mRegisted && mContext != null) {
- mContext.unregisterReceiver(mNetWorkChangeReceiver);
- mRegisted = false;
- }
- unregisterAll();
- }
- public boolean isNetworkActive() {
- return mIsNetWorkActive;
- }
- }
|