반응형
처리기 취소.postdelayed 프로세스
사용 중handler.postDelayed()
내 앱의 다음 단계가 실행되기 전에 대기 기간을 만드는 것.대기 기간 동안 진행 표시줄과 취소 버튼이 있는 대화 상자를 표시합니다.
문제는 시간이 경과하기 전에 postDelayed 작업을 취소할 방법을 찾을 수 없다는 것입니다.
지연된 실행 파일을 게시하기 위해 이 작업을 수행합니다.
myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGTH);
그리고 이것은 그것을 제거하는 것입니다.myHandler.removeCallbacks(myRunnable);
동일한 핸들러에 여러 개의 내부/익명 실행 테이블이 전달된 경우 동일한 이벤트에서 모두 취소하려는 경우
handler.removeCallbacksAndMessages(null);
문서에 따르면,
보류 중인 콜백 게시물 및 토큰이 목적인 보낸 메시지를 모두 제거합니다.토큰이 null이면 모든 콜백 및 메시지가 제거됩니다.
다른 방법은 실행 파일 자체를 처리하는 것입니다.
Runnable r = new Runnable {
public void run() {
if (booleanCancelMember != false) {
//do what you need
}
}
}
지연된 작업에 대한 취소 방법을 제공하는 클래스입니다.
public class DelayedAction {
private Handler _handler;
private Runnable _runnable;
/**
* Constructor
* @param runnable The runnable
* @param delay The delay (in milli sec) to wait before running the runnable
*/
public DelayedAction(Runnable runnable, long delay) {
_handler = new Handler(Looper.getMainLooper());
_runnable = runnable;
_handler.postDelayed(_runnable, delay);
}
/**
* Cancel a runnable
*/
public void cancel() {
if ( _handler == null || _runnable == null ) {
return;
}
_handler.removeCallbacks(_runnable);
}}
부울을 통해 전달하여 지연 실행 가능한 게시물 내의 CancelCallBacks(이)를 호출했을 때 효과가 있었습니다.
Runnable runnable = new Runnable(){
@Override
public void run() {
Log.e("HANDLER", "run: Outside Runnable");
if (IsRecording) {
Log.e("HANDLER", "run: Runnable");
handler.postDelayed(this, 2000);
}else{
handler.removeCallbacks(this);
}
}
};
언급URL : https://stackoverflow.com/questions/4378533/cancelling-a-handler-postdelayed-process
반응형
'source' 카테고리의 다른 글
각 행에서 두 개의 열을 선택하여 값 집합을 매핑하는 중 (0) | 2023.08.30 |
---|---|
리와 울에서 검은색 점 제거 (0) | 2023.08.30 |
MariaDB를 C++ Application에 연결하기 위한 dll 및 lib 파일을 어떻게 처리할 수 있습니까? (0) | 2023.08.30 |
Excel VBA에서 공용 변수 값 확인 - 로컬 창 대안 (0) | 2023.08.30 |
오라클에서 대량 삭제 후 공간 회수 (0) | 2023.08.30 |