Я работаю над приложением Android, которому требуется TCP-соединение с TCP-сервером (написано в Node.js)
Мой Android-клиент TCP работает, он может отправлять сообщения туда и обратно.
Мои вопросы:
- Каков наилучший способ обработки TCP-соединения с сервером на Android?
- Как поддерживать соединение (правильно закрыть соединение на onDestroy() и т.д.)?
- Есть ли какой-либо вариант, который использует AsyncTask (кроме обычного класса Thread, который не разрешен в Android 4.0).
У меня есть соединение сокета в AsyncTask, как это:
@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 и не имею права иметь сетевой код в регулярном потоке.