Socket 클래스로 서버와 TCP 통신하는 예제를 만들고 있습니다.
접속을 종료할때 데이터 수신 스레드를 종료하는 방법이 고민입니다.
아래와 같이 데이터를 수신하는 스레드 클래스를 만들고 객체도 생성했습니다.
CheckRecv mCheckRecv = new CheckRecv();
// 데이터 수신 스레드 클래스 재정의
public class CheckRecv extends Thread {
public void run() {
try {
// 스레드가 인터럽트 상태가 아니라면 루프를 반복한다
while( !Thread.currentThread().isInterrupted() ) {
// 입력 스트림에서 메시지를 읽는다
String recvData = mReader.readLine();
~
}
} catch (Exception e) {
Log.d("tag", "Receive error");
}
}
}
접속을 종료할 때 mCheckRecv 를 종료하려고 하는데 interrupt() 로 종료하려면 while() 구문을 최소한 한번은 수행해야 합니다.
그러니까 서버에서 데이터를 수신하기 전까지는 종료가 안되는 것이지요.
무식하게 mCheckRecv 를 삭제하려고 했더니 destroy() 함수가 디프리케이티드 입니다.
그냥 mCheckRecv = null; 이런 식으로 삭제해도 되는건가요?
해보신 분의 가르침을 구합니다.