在延迟通话期间递增进度条

时间:2011-06-22 16:19:31

标签: android progress-bar runnable postdelayed

我有一个看似这样的延迟通话:

handler.postDelayed(new Runnable() { 
            public void run() {
                newDeviceBluetooth();
            //increment progressbar each thousand millis passed
            }
       },15000);

但是我有一个功能齐全的进度条,我想通过延迟传递每一秒。 那么这个问题的方法是什么呢,它是一种实现这个的方法吗?

感谢您回答并帮助我的时间


所以在我看了答案中可能的内容后,我编写了自己的类来实现runnable。这是实现这个的可能方法吗?如果我的直觉感觉不是很糟糕的话,我觉得我有点不对劲。

    public void run() {
    while(counter <= 15){
        if(counter < 15){
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    counter++;
                }
            }, 1000);
        }
        else{
            sb.newDeviceBluetooth();
        }
    }

}

2 个答案:

答案 0 :(得分:3)

您是否可以使用AsyncTask?然后,您可以调用publishProgress()并更新onProgressUpdate()

中的UI

也许这不是最好的解决方案,因为它需要另一个线程。


但你可以让你的Runnable每秒都开火。你可以通过让run()方法对你的处理程序执行postDelayed()来实现这一点。

创建自己的可扩展runnable的类,并使用成员变量作为计数器。 在正常情况下更新UI,并在第15次调用newDeviceBluetooth()。

答案 1 :(得分:1)

找到问题的答案。在App / dialog / Progress对话框

下的api演示中有一个示例代码

因此,下面的代码需要修改,但它会显示进度条的延迟。

        mProgressHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (mProgress >= MAX_PROGRESS) {
                mProgressDialog.dismiss();
            } else {
                mProgress++;
                mProgressDialog.incrementProgressBy(1);
                mProgressHandler.sendEmptyMessageDelayed(0, 100);
            }