나는 항상 두 개의 핸들러를 생성한다 : 하나는 메인 쓰레드에 랩핑하고, 다른 하나는 싱글 쓰레드에 랩핑한다.이것은 handlerthread를 막기위한 완벽한 방법입니까?
활동 라이프 사이클에서이를 시작하고 중지하는 가장 좋은 방법입니까?
HandlerThread safeThread = null;
Handler safeHandler = null;
Handler handler = null;
@Override
public void onStart() {
if (safeThread == null) {
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.NEW) {
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.WAITING) {
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.TERMINATED) {
safeThread = null;
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
}
}
protected void onStop() {
Log.d("x", "onStop is executed");
safeHandler = null;
safeThread.quit();
safeThread.interrupt();
safeThread = null;
super.onStop();
}
당신은 스레드 주차 할 안전한 방법으로 사용할 수 있습니다
safeThread.interrupt(); 스레드를 중지하는 가장 좋은 방법입니다 – Sameer
예, 알아요,하지만 내가 생각할 때이 중단 후 null이 안전합니다. – rex
나는 대답을주었습니다. 당신이 stackoverflow.if에 대한 새로운 의견을 제시하고 싶습니다. 그러면 누군가에게 감사를 표하고 싶습니다. 그에게 투표를 해주고, 대답이 가장 좋다고 생각한다면 대답으로 표시하십시오. :) 환영합니다. 건배 – Sameer