У меня есть этот код:Как я могу повторно использовать поток? Когда потоки закрыты?
@Override
public void onClick(View v) {
if (!connected) {
serverIpAddress = serverIp.getText().toString();
if (!serverIpAddress.equals("")) {
Thread cThread = new Thread(new ClientThread());
cThread.start();
}
}
}
};
private OnClickListener communicateListener = new OnClickListener() {
@Override
public void onClick(View v) {
message = messageServer.getText().toString();
if (!serverIpAddress.equals("")) {
cThread.run();
//Thread cThread = new Thread(new ClientThread());
//cThread.start();
}
}
};
public class ClientThread implements Runnable {
public void run() {
if (socket==null)
connect to the server;
else
do smth else;
}
Что я хочу connectListener создать нить и нить, чтобы установить соединение. Затем, щелкнув кнопку communicationListener, приложение будет считывать из сокета или записывать в него. Я не знаю, как это реализовать.
Должен ли я назвать поток снова каким-то образом в методе onclick для общенияListener? Или он постоянно работает, и он будет «делать что-то еще», если сокет отличен от нуля?
Я попытался снова вызвать функцию запуска, но получил исключение NullPointerException. Он работает очень хорошо, когда я создаю новый поток в communityListener, но я не хочу создавать новый поток каждый раз, когда я нажимаю кнопку.
Спасибо