안드로이드 개발 질문/답변
(글 수 45,052)
이부분에서 왜 NullPointerException 이 발생할까요?
우선 클래스는 쓰레드를 상속받는 클래스입니다.
전역변수로
public PrintWriter streamOut = null; 이 선언되어있구요.
클래스의 run() 안에
public void run()
{
try
{
streamOut = new PrintWriter(connectSocket.getoutputStream(), true); // connectSocket 역시 선언되어있습니다. 넘어가겟씁니다.
}
catch(...)
{
.....
}
}
private void send(String sendData) throws IOException
{
streamOut.println(sendData);
streamOut.flush();
}
이렇게 선언되어 있습니다.
그리고 다른 클래스에서 위의 클래스를 생성하고 start() 한 후에 send(....) 하였습니다.
문제는 send() 메소드 내의 streamOut 부분인데요. 널포인터 익셉션이 발생하네요... 왜그런걸까요?
혹시 start() 하자마자 send() 메소드가 발생하여 아직 초기화되지 않은 streamOut 을 사용하려고 해서 그런가요......




streamOut 이 어딘가에서 닫혔을 가능성이 많아 보입니다. 디버깅 해보시죠. 소켙 처리하실 때 쓰레드 안에서 사용하시는 스트림을 닫아버리셔도 소켙이 닫힐 수 있으니 확인해 보시기 바랍니다.