欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sendmessagedelayed 如何用

更新时间: 2014-05-17 13:27:50 责任编辑: Author_N7

 

sendMessageDelayed 怎么用?
本帖最后由 aizhengdong 于 2012-12-31 14:17:23 编辑 利用handler和message来更新进度条进度,用sendMessageDelayed(msg, 2000);来做延时,只是再第一次加进度的时候延时2秒,之后延时就不起作用了,2秒后进度条一瞬间进度就加满了。为什么是这样呢?请大家指教!
发消息的代码:
new Thread(){
@Override
public void run() {
while(progress <100){
progress = pgbar.getProgress()+5;
Message msg = myhandler.obtainMessage();
msg.what = 1;
myhandler.sendMessageDelayed(msg, 2000);

}

}
}.start();


处理消息的代码:
private Handler myhandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
pgbar.setProgress(progress);
break;
}
super.handleMessage(msg);
}
};

--参考方法--
myhandler.sendMessageDelayed(msg, 2000);只是延迟消息的发送,它不能让发送消息线程延时。所以在2s内就发送了100次的进度消息。
--参考方法--
设置标记为,发送一次后改变标志位,然后循环不进行,操作完了 还原 标志位 继续
--参考方法--
使用DELAY就不要使用线程:
private Handler myhandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 1:
progress += 5;
if (progress < 100){
    Message msg = myhandler.obtainMessage();
    msg.what = 1;    
    myhandler.sendMessageDelayed(msg, 2000);
}
                pgbar.setProgress(progress);
                break;
            }    
            super.handleMessage(msg);            
        }
    };
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-17 13:27:50
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/800523/
本文WWW.DOC100.NET DOC100.NET版权所有。