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
'IT story' 카테고리의 다른 글
tensorflow가 GPU 메모리의 전체를 할당하지 못하게하는 방법은 무엇입니까? (0) | 2020.04.09 |
---|---|
bash는 함수의 정의를 보여줄 수 있습니까? (0) | 2020.04.09 |
psql-명령 결과를 파일로 저장 (0) | 2020.04.09 |
Oracle에서 다중 행 삽입을 수행하는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.09 |
소켓 '/var/lib/mysql/mysql.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2). (0) | 2020.04.09 |