Heim > Fragen und Antworten > Hauptteil
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mHandler.removeCallbacksAndMessages(null);
}
}, 500);
mHandler.removeCallbacksAndMessages(null); 用来移除所有消息,
但是用handler.postdelayed 无效,
是用TimerTask 或者 Thread 来控制时 是可以生效的。
请问因为什么原因导致无效的呢?
ringa_lee2017-04-17 17:37:39
removeCallbacksAndMessages(null)的作用是什么吗?
如果参数为null的话,会将所有的Callbacks和Messages全部清除掉。
你在看看源码,Message的构造函数为空,what为0,还没被执行, 也会被删除掉。
伊谢尔伦2017-04-17 17:37:39
感觉延迟500后,remove掉自己这个runnable有些奇怪。
可以试试这个
mHandler = new Handler(){
handleMessage(Message msg){
switch(msg.what){
case REMOVE:
removeCallbacksAndMessages(null);
}
}
}
....
mHandler.sendEmptyMessageDelayed(REMOVE, 500);