반응형
처리기 취소.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 |