안드로이드 개발 질문/답변
(글 수 45,052)
스레드를 Application 클래스를 상속받은 MainApplication.java 에서 생성해서
프로그램 전체에서 공용으로 쓸 수 있게 했는데요
스레드 코드가
public void run() {
while(!isThreadKill) {
try{
mHandler.sendEmptyMessage(0);
sleep(1000);
}
}
catch(InterruptedException e) {
}
}
이런 식이고... 프로그램 돌리면서 DDMS 의 Thread 탭으로 확인해보니까
isThreadKill 변수가 true 이면 저 while 문을 빠져나오게 되면서 스레드가 죽으면서 없어지는 것도 확인했거든요~~
그런데 문제는 어플을 종료하지 않고 다시 스레드를 시작시킬려고
thread = null;
thread = new TimeThread(mHandler);
thread.setDaemon(true);
thread.start();
이렇게 정석적인 스레드 시작방법으로 코드를 써놨는데 전혀 스레드가 재시작 하지를 않네요... 컴파일 에러는 안나는데...
한번 죽은 스레드는 그 응용프로그램이 죽기전까진 다시 살아날 수 없는건가요??? 정말 궁금합니다!!!
물론 스레드를 여러개 생성하는건 가능합니다만 이러면 CPU 점유율이 엄청 올라가서...
스레드 한개로 응용프로그램내에서 죽였다 살렸다 하다가 프로그램 종료시에 같이 죽는 그런 설계를 하고싶습니다
도움좀 주심 감사하겠습니다!




저 코드를 돌면 스레드를 다시 살리는게 아니라
스레드를 새로 생성해서 실핼시키는 것으로,
new TimeThread()로 진입하면 스레드가 도는 게 맞습니다
저 코드로 진입하는자 확인해보세요