如何实现在单个线程内读写单个SOCKET?
我不想把读写放在两个线程里面了,而且连接和重连也想放在这个单独线程内,现在我尝试如下的方式:
首先,既然要读,那就少不了一个WHILE循环,
- Java code
while(checkSocketState()) { try { if(dataInputStream.available()>0) { parseCommand(); } } catch(Exception e) { Log.i("SocketClientThread", "fail to read inputStream "); return; } }如果有命令过来,就发到其他线程的消息队列里去,
然后是写,因为写的命令是其他线程发过来的,就需要一个HANDLER,
- Java code
Looper.prepare(); mMainHandler = new Handler() { @Override public void handleMessage(Message msg) { // 接收子线程的消息 sendMsg((String) msg.obj); } }; new HeartBeatThread(this).start(); Looper.loop();但LOOPER.LOOP()一运行,就进入她的WHILE循环了(消息循环),就无法去执行我们的检查输入的相关代码了,
如何合并这两个循环呢,各位大牛们?
[解决办法]
HandlerThread