/* * Copyright (c) 2016. * chinaume@163.com */ package com.goav.netty.Handler; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import com.goav.netty.Impl.ConnectCallBack; class ClientNetWork extends ClientNetWorkIml { ClientNetWork() { } private void initThread() { thread = new Thread("Client_Thread") { @Override public void run() { while (callBack != null && mContext != null) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } pushNetWorkState(); } } }; } @Override public void onDestroy() { this.mContext = null; this.callBack = null; } @Override public void startListener(Context context) { this.mContext = context; this.callBack = ClientImpl.newInstances(); initThread(); startLocalListener(); } private void startLocalListener() { if (!thread.isAlive() && mContext != null) { thread.start(); } } private void pushNetWorkState() { boolean connect = isNetworkAvailable(); if (connect != isConnect) { isConnect = connect; this.callBack.onConnectChange(isConnect); } } private boolean isNetworkAvailable() { if (mContext == null) { isConnect = false; return false; } ConnectivityManager connectivity = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (info != null && info.isConnected()) { // 当前网络是连接的 if (info.getState() == NetworkInfo.State.CONNECTED) { // 当前所连接的网络可用 return true; } } } return false; } private static class ClientNetWorkHelper { final static ClientNetWork CLIENT_NET_WORK = new ClientNetWork(); } private ConnectCallBack callBack; private boolean isConnect; private Context mContext; private Thread thread; public static ClientNetWork newInstance() { return ClientNetWorkHelper.CLIENT_NET_WORK; } }