반응형
handler.postDelayed를 취소하는 방법은 무엇입니까?
내가이있는 경우 handler.postDelayed
이미 실행에서 스레드 내가 그것을 취소해야합니까?
Android에 따라 postDelays를 취소하기 위해 이 작업을 수행합니다. removeCallbacks 는 메시지 대기열에 있는 Runnable r의 보류 중인 모든 게시물을 제거합니다.
handler.removeCallbacks(runnableRunner);
또는 모든 메시지 및 콜백을 제거하는 데 사용
handler.removeCallbacksAndMessages(null);
실행 가능한 항목에 대한 참조를 유지하지 않으려면 다음을 호출하면 됩니다.
handler.removeCallbacksAndMessages(null);
공식 문서 는 다음과 같이 말합니다.
... 토큰이 null이면 모든 콜백과 메시지가 제거됩니다.
실행 중인 동안 postDelayed를 취소해야 하는 경우가 있어서 위의 코드가 제 예제에서는 작동하지 않았습니다. 내가 한 일은 Runnable 내부에서 부울 검사를 하는 것이었습니다. 그래서 주어진 시간 이후에 코드가 실행될 때 당시의 부울 값이 무엇인지에 따라 실행될 것이고 그것이 저에게 효과적이었습니다.
public static Runnable getCountRunnable() {
if (countRunnable == null) {
countRunnable = new Runnable() {
@Override
public void run() {
if (hasCountStopped)
getToast("The count has stopped");
}
};
}
return countRunnable;
}
참고로 - 내 활동을 파괴할 때 다른 개발자가 제안한 코드인 handler.removecallback 및 handler = null을 사용합니다. 코드를 깨끗하게 유지하고 모든 것이 제거되는지 확인하기 위해 핸들을 취소합니다.
ReferenceURL : https://stackoverflow.com/questions/7407242/how-to-cancel-handler-postdelayed
반응형
'IT이야기' 카테고리의 다른 글
C의 모든 공백에서 문자열 분할 (0) | 2021.09.15 |
---|---|
os.sep 또는 os.path.sep 중 어느 것을 사용해야 합니까? (0) | 2021.09.15 |
동일한 포트에서 여러 노드(Express) 앱 실행 (0) | 2021.09.15 |
LDAP 사용자의 자격 증명을 테스트하는 쉬운 방법 (0) | 2021.09.14 |
라이센스 계약 단계 없이 부트스트래퍼 응용 프로그램을 만드는 방법 (0) | 2021.09.14 |