마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

TCP 통신 종료할때 데이터 수신 스레드를 삭제하는 방법

0 추천
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; 이런 식으로 삭제해도 되는건가요?
해보신 분의 가르침을 구합니다.
카르페디엠1 (180 포인트) 님이 2014년 4월 11일 질문

1개의 답변

+1 추천
aucd29 (218,390 포인트) 님이 2014년 4월 11일 답변
...