android - Handler postDelayed 无效。

浏览:30日期:2022-12-05

问题描述

mHandler.postDelayed(new Runnable() { @Override public void run() {mHandler.removeCallbacksAndMessages(null); }}, 500); mHandler.removeCallbacksAndMessages(null); 用来移除所有消息, 但是用handler.postdelayed 无效, 是用TimerTask 或者 Thread 来控制时 是可以生效的。 请问因为什么原因导致无效的呢?

问题解答

回答1:

removeCallbacksAndMessages(null)的作用是什么吗?

如果参数为null的话,会将所有的Callbacks和Messages全部清除掉。你在看看源码,Message的构造函数为空,what为0,还没被执行, 也会被删除掉。

回答2:

请问到底怎么无效了,是mHandler.removeCallbacksAndMessages(null);没有执行?

回答3:

感觉延迟500后,remove掉自己这个runnable有些奇怪。可以试试这个

mHandler = new Handler(){ handleMessage(Message msg){ switch(msg.what){ case REMOVE: removeCallbacksAndMessages(null); } }}....mHandler.sendEmptyMessageDelayed(REMOVE, 500);

相关文章: