我工作的一個Android應用程序,需要一個TCP連接到TCP服務器(寫在Node.js的)Android的TCP連接的最佳實踐
我的Android TCP客戶端工作的可以發送郵件來回。
我spesific的問題是:
- 什麼是處理一個TCP連接到Android中的服務器的最佳方式?
- 如何保持連接(關閉連接onDestroy()等)?
- 是否有再利用的AsyncTask(除正常的Thread類,這是不是在Android 4.0的允許)
我有這樣的一個的AsyncTask我的套接字連接任何bether方式:
@Override
protected Void doInBackground(Void... params) {
try {
Log.d("TCP_MESSAGE", "Connecting...");
socket = new Socket(MY_LOCAL_IP, 8080);
dataOutput = new DataOutputStream(socket.getOutputStream());
inputstream = new InputStreamReader(socket.getInputStream());
input = new BufferedReader(inputstream);
while (!canceled) {
String message = input.readLine();
handleMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
我在AsyncTask中建立連接的原因是因爲我使用的是android 4.0,並且不允許在普通線程中使用網絡代碼。
你是說在4.0中不允許使用Thread?那是不正確的。但無論如何看到我的答案在下面。 –
你錯了4.0中的線程。你不能做的是** ** MAIN **線程中的網絡代碼。 – m0skit0
Okey。當我使用一個正常的線程時(我發現其他線程出現了相同的問題),我得到了一個異常。但我確實認爲這有點奇怪,我猜你說得對。 – Emil