public abstract class BaseClientMgr extends Subject implementsIClientConnect {protected boolean isRunning; //当前是否正在连接
protected boolean isSending; //是否正在发送 线程是否被占用
private int mPort; //连接服务器的端口号
private int mCommunication; //通讯类型
private int heartTimeOutCount = 0; //记录心跳超时次数
protected int function = 1200; //关闭连接功能号
public static final int RESPONSE_SUCCESS = 0x401;public static final int RESPONSE_FAIL = 0x402;public static final int RESPONSE_TIMEOUT = 0x403;public static final int REQUEST_HEARTBEAT_TIMEOUT = 0x410; //心跳超时
public static final int NOT_LOGIN = 0x411; //用户未登录
private String mConnectKey = "BasicServicesMgr";private String mHost; //连接服务器的IP地址
protected ArrayList mEntityMsg = null; //待发送消息集合
protected Context mContext; //Context对象
protected CommunicationThreadManager mManager; //该通讯层管理器
protected ParseByteThread mParseByteThread = null; //数据解析线程
protected ExecutorService executor; //线程连接池
protected BaseClientMgr(String host, intport, String key) {
init(host, port, key);
}//初始化
private void init(String host, intport, String key) {this.mContext =MeiApp.mContext;
isRunning= false;
isSending= false;
mHost=host;
mPort=port;
mConnectKey=key;
mEntityMsg= new ArrayList();
executor= Executors.newFixedThreadPool(10);
mParseByteThread= new ParseByteThread(this);
executor.execute(mParseByteThread);
}protected Handler basicHandler = newHandler() {
@Overridepublic voidhandleMessage(Message msg) {super.handleMessage(msg);switch(msg.what) {caseClientConstants.REQUEST://发送请求 连接占用
if (mEntityMsg != null && mEntityMsg.size() > 0) {
isSending= true;//清除handler的消息
basicHandler.removeMessages(ClientConstants.REQUEST);
basicHandler.removeMessages(ClientConstants.REQUEST_CREATE_CONNECT);
basicHandler.removeMessages(ClientConstants.REQUEST_SEND_MESSAGE);//请求类型 当为网络请求时判断网络状态 建立连接//检查连接是否可用
if(isRunning) {//直接发送消息
basicHandler.removeMessages(ClientConstants.REQUEST_SEND_MESSAGE);
basicHandler.sendEmptyMessage(ClientConstants.REQUEST_SEND_MESSAGE);
}else{//建立连接
basicHandler.removeMessages(ClientConstants.REQUEST_CREATE_CONNECT);
Message msgCreate=Message.obtain();
msgCreate.what=ClientConstants.REQUEST_CREATE_CONNECT;
msgCreate.arg1= 0;
basicHandler.sendMessage(msgCreate);
}