-
java.lang.IllegalThreadStateException안드로이드(java)/에러 관련 2020. 3. 3. 16:44
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cis.handsanitizer/com.cis.handsanitizer.RegisterActivity}: java.lang.IllegalThreadStateException
소켓 통신을 하기 위해 클래스를 하나 생성하고 쓰레드를 상속 받았습니다.
그리고 초기 화면으로 사용할 화면에서 버튼을 누르면 소켓 통신 클래스를 새로운 객체로 만들었습니다.
화면이 넘어간 이후에 다시 뒤로가기 버튼으로 되돌아간 이후 소켓통신 클래스 인스턴스를 만들도록 하면 위와 같은 에러가 나타났습니다.
뭔가 쓰레드 관련된 에러인거 같은데 정확히 뭐가 문제인줄 몰라서 열심히 찾아보았습니다.
답은 생각보다 간단했었습니다.
기존에 생성된 쓰레드를 종료시키고 새로운 인스턴스를 만들어서 붙도록 하면 되는것 이었네요.
그래서 아래처럼 한 번 만들어봤습니다.
if(myThread.isAlive()){
myThread.interrupt();
}
myThread = new MyThread();
myThread.start();
이렇게 기존 쓰레드를 종료시키기 위해 interrupt를 걸어서 종료시키도록 하고 새로운 인스턴스를 생성하여 붙으니까 잘 되네요.
혹시라도 쓰레드 문제가 있으신 분들은 기존에 돌고있는 쓰레드를 종료시킨 이후에 다시 새로운 쓰레를 만들어서 연결해보시는것도 괜찮을거같아요.
'안드로이드(java) > 에러 관련' 카테고리의 다른 글