取消一个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); } } };