2014-08-29 4 views
0

Handler.postDelayed (Runnable를 R, 긴 delayMillis) 말씀에 대한 문서 -delayMillis 매개 변수는 Handler.postDelayed() 메서드에서 실제로 무엇을 나타 냅니까?

은 실행 가능한 r은, 메시지 큐에 추가 할 경과 지정된 시간 이후에 를 실행되도록합니다.

r 실행될 Runnable. delayMillis Runnable이 실행될 때까지의 지연 시간 (밀리 초 단위).

참고 : 마지막 단어가 을 실행하고, 는 메시지 큐에 추가되지. Runnable은 메시지 큐의 끝에 즉시 추가됩니다. 즉,이 Runnable 실행시의 지연은,이 Runnable의 전의 메세지 대기 행렬의 메세지 또는 실행 가능 오브젝트의 실행에 걸리는 시간과 같습니다. 두 시간이 모두 동등하다는 것을 어떻게 보장합니까? 내가 놓친 게 있니?

예를 들어 MessageQueue에 현재 각각 1, 1.6, 2 초가 소요되는 A, B, C가 있고 handler.postDelayed (R, 4000)가 MessageQueue 끝에 R을 추가한다고 가정합니다. A, B, C는 4.6 초 후에 완료되지만 R은 4 초 후에 실행되도록 예약됩니다. 이것이 어떻게 가능한지? 지연 시간이 4.6 초를 초과하면 어떻게 될까요?

URL - Android Reference page for Handler postDelayed

+1

기본적으로 최소한 delayMillis 밀리 초 후에 실행됩니다. – Simas

답변

2

그것은 정확한 지연이 아니다. 지연을 "이전보다"이라고 생각하십시오. 지연 후 runnable은 실행에 적합하지만 메시지 큐가 이전 메시지를 처리 ​​할 때만 실행됩니다.

도덕적 : 장시간 동안 스레드를 차단하지 않고 메시지/실행 파일을 처리해야합니다.