android - Handler postDelayed 无效。
迷茫
迷茫 2017-04-17 17:35:39
[Android讨论组]
        mHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mHandler.removeCallbacksAndMessages(null);
                    }
                }, 500);
                
                
                
                 mHandler.removeCallbacksAndMessages(null); 用来移除所有消息,
                 
                 但是用handler.postdelayed 无效,
                 是用TimerTask 或者 Thread  来控制时 是可以生效的。
                 
                请问因为什么原因导致无效的呢?
                
              
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
ringa_lee

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

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

高洛峰

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

伊谢尔伦

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


mHandler = new Handler(){
   handleMessage(Message msg){
    switch(msg.what){
    case REMOVE:
       removeCallbacksAndMessages(null);
    }
   }
}
....
mHandler.sendEmptyMessageDelayed(REMOVE, 500);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号