2013-03-16 2 views
2

내가 쓰는 말의 thred 출구 equivalant이다. 작업 스레드 동안 나는 항상 내 runnable 완료 & 완료되면 내 응용 프로그램이 스레드에서 더 이상 작동하지 않습니다 싶습니다. 즉, 항상이 로그를 받아야합니다 실행 완료;는 (실행 가능한) handler.removeCallbacks가

이제 Thread 클래스 대신 Handler를 사용한다고 가정합니다.

Handler handler = new Handler(); 
handler.post(runnable); 

나는 실행 가능한이 완료 될 때처럼 handler.removeCallbacks(runnable)인지 확인 할 수 있으며 내 응용 프로그램은 더 이상이 실행 가능한 작동하지 않습니다?

답변

3

handler.removeCallbacks(runnable)은 보류중인 Runnables을 메시지 큐에서 제거합니다. 하지만 현재 실행중인 Runnable을 중지하지는 않습니다. 예를 들어 말을 당신은

class A implements Runnable { 

    public void run() { 
     handler.removeCallbacks(a); 
     Log.i("tag", "are start"); 
        // Do work 
     Log.i("tag", "end"); 
    } 
} 

A a = new A(); 

의의 Runnable을 가지고 실행 가능한 첫 번째는 removeCallbacks 메소드를 호출 실행 그래서 때

handler.post(a);

을했다. 하지만 로그 캣에서 당신은 출력이

가 시작

당신이 run 방법 removeCallbacks를 사용하지 않는 경우 동안 다음 출력이 될 것입니다 될 것이라고 볼 수

시작

시작

관련 문제