取消一个handler.postdelayed进程

我正在使用handler.postDelayed()在我的应用程序的下一个阶段发生之前创build一个等待期。 在等待期间,我正在显示一个带有进度条和取消button的对话框。

我的问题是我无法find一种方法来取消postdelayed任务之前的时间过去了

我这样做是为了发布一个延迟的可运行的:

 myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGTH); 

而这个删除它: myHandler.removeCallbacks(myRunnable);

另一种方法是处理Runnable本身:

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

万一你有多个内部/匿名runnables传递给相同的处理程序,并且你想要取消所有相同的事件使用

handler.removeCallbacksAndMessages(null);

根据文件,

删除所有未完成的callbackpost,并发送obj为标记的消息。 如果令牌为空,所有的callback和消息将被删除。

它为我工作时,我通过一个布尔值交给延迟可运行的邮件中调用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); } } };