스레드와 핸들러에 대해 이번에 처음 공부하게 되었는데, 부딪쳐보다가 답답해서 질문해보려 합니다.
START 버튼과 STOP 버튼이 있어서 START 버튼을 누를 시 스레드가 계속 돌아가고, STOP을 누를 시 스레드를 멈춥니다.
startButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if(flag == false) {
flag = true;
} else {
Randomizer.setDaemon(true);
Randomizer.start();
}
startButton.setEnabled(false);
}
});
stopButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
flag = false;
startButton.setEnabled(true);
}
});
}
START 버튼과 STOP 버튼에 대해서는 이렇게 구현했습니다. 스레드에 있는 flag 값을 이용해 스레드를 돌렸다 멈췄다 하는 방식입니다.
flag 가 true여서 스레드가 돌아가고 있는데 START 버튼을 한번 더 눌러 이미 돌아가고 있는 스레드를 또 시작하지 않게끔 버튼 비활성화를 걸었고, STOP버튼을 누를 시에 다시 START버튼을 활성화 할 수 있게끔 해놨습니다.
문제는 스레드가 돌아가고 있는 상태에서 뒤로가기 버튼을 눌렀을시 스레드를 멈출 수가 없습니다. setDaemon을 설정을 했는데... 다시 돌아와서 암만 STOP버튼을 누른들 스레드는 계속 돌아가네요.
이에 대한 해결방법이 궁금합니다.