IT story

handler.postdelayed 프로세스 취소

hot-time 2020. 4. 9. 08:08
반응형

handler.postdelayed 프로세스 취소


handler.postDelayed()앱의 다음 단계가 시작되기 전에 대기 기간을 만드는 데 사용 하고 있습니다. 대기 시간 동안 진행률 표시 줄과 취소 버튼이 있는 대화 상자가 표시 됩니다.

내 문제는 시간이 지나기 전에 postDelayed 작업 취소 하는 방법을 찾을 수 없다는 것 입니다.


지연된 실행 파일을 게시하기 위해이 작업을 수행합니다.

myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGTH); 

그리고 이것을 제거하려면 : myHandler.removeCallbacks(myRunnable);


동일한 핸들러에 여러 개의 내부 / 익명 런너 블이 전달되고 동일한 이벤트 사용시 모두 취소하려는 경우

handler.removeCallbacksAndMessages(null);

설명서에 따라

대기중인 콜백 게시물과 obj가 토큰 인 메시지를 삭제합니다. token이 null이면 모든 콜백 및 메시지가 제거됩니다.


또 다른 방법은 Runnable 자체를 처리하는 것입니다.

Runnable r = new Runnable {
    public void run() {
        if (booleanCancelMember != false) {
            //do what you need
        }
    }
}

부울을 통해 전달하여 게시 가능한 지연 가능한 게시물 내에서 CancelCallBacks (this)를 호출했을 때 저에게 효과적이었습니다.

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);
        }
    }
};

다음은 지연 조치에 대한 취소 메소드를 제공하는 클래스입니다.

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);
}}

이 요지가 도움이되기를 바랍니다 https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4

핸들러 및 실행 가능 기능이있는 화면 실행기로서의 MainActivity, 실행 가능한 로그인 실행 페이지 또는 기본 환경 설정 로그인 사용자가있는 피드 페이지 (firebase).

참고 URL : https://stackoverflow.com/questions/4378533/cancelling-a-handler-postdelayed-process

반응형