android开发网络状态监听---观察者模式

创建动态监听广播

public class NetChangeState extends BroadcastReceiver {

    NetWork mNetWork = new NetWork();
    @Override
    public void onReceive(Context context, Intent intent) {

   if (ConnectivityManager.CONNECTIVITY_ACTION == intent.getAction()){
       ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
       NetworkInfo info = manager.getActiveNetworkInfo();
       if (info != null){
           if (info.isConnected()) {

               mNetWork.setConnected(true);
               //通知观察者网络状态已改变
               NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork);
               if (info.getType() == ConnectivityManager.TYPE_WIFI) {

                   mNetWork.setWifi(true);
                   //通知观察者网络状态已改变
                   NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork);
                   Toast.makeText(context, "当前wifi连接可用", Toast.LENGTH_SHORT).show();
               } else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {

                   mNetWork.setMobile(true);
                   //通知观察者网络状态已改变
                   NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork);
                   Toast.makeText(context, "当前移动网络连接可用", Toast.LENGTH_SHORT).show();
               }
           } else {

               mNetWork.setConnected(false);
               //通知观察者网络状态已改变
               NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork);
               Toast.makeText(context, "当前没有网络连接,请确保你已经打开网络", Toast.LENGTH_SHORT).show();
           }
       }else {
         mNetWork.setConnected(false);
         mNetWork.setMobile(false);
         mNetWork.setWifi(false);
         NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork);


       }

   }

    }
}

创建观察者

public class NetWhatcher implements Observer {


    @Override
    public void update(Observable observable, Object o) {

    }
}

创建被观察随监听网络状态

public class NetWorkChange extends Observable {


    public static NetWorkChange mNetWorkChange = null;
    public static NetWorkChange getNetWorkChange(){
        if (mNetWorkChange == null){
            mNetWorkChange = new NetWorkChange();
        }
        return mNetWorkChange;
    }
    public void notifyDataChange(NetWork work){
        setChanged();
        notifyObservers(work);
    }

}
创建网络状态数据类

public class NetWork {

    private boolean wifi;
    private boolean mobile;
    private boolean connected;

    public NetWork() {
    }


    public boolean isWifi() {
        return wifi;
    }

    public void setWifi(boolean wifi) {
        this.wifi = wifi;
    }

    public boolean isMobile() {
        return mobile;
    }

    public void setMobile(boolean mobile) {
        this.mobile = mobile;
    }

    public boolean isConnected() {
        return connected;
    }

    public void setConnected(boolean connected) {
        this.connected = connected;
    }
}
在application中动态注册广播
public class MyAPP extends Application{
    private NetChangeState mNetChangeState = new NetChangeState();
    @Override
    public void onCreate() {
        super.onCreate();
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        filter.addAction("android.net.wifi.WIFI_STATE_CHANGE");
        filter.addAction("android.net.conn.STATE_CHANGE");
        registerReceiver(mNetChangeState,filter);

    }
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值