在Android中每次onclick后,ProgressBar运行得更快

时间:2015-01-16 17:48:23

标签: android multithreading timer android-progressbar thread-sleep

我在Android中遇到这个应用程序。在我的应用程序中,我试图实现一个进度条,显示特定秒的计时器。单击按钮时,计时器应刷新,并再次从progressBar中的0开始。为此,我使用Thread。

问题是,当我单击按钮时,线程调用计时器功能,每次线程变得越来越快。我无法解决它,也不知道背景会发生什么。 这是我的Timerfunction代码

public void setTimer()
    {
        prog=0;
        progress.setProgress(prog);
        if(flag){
        t= new Thread(new Runnable(){
            public void run()
            {
              while(prog<100)
              {
                prog+=1;
                handle.post(new Runnable(){
                    public void run()
                    {
                        progress.setProgress(prog);
                        if(prog==progress.getMax()&& flag){
                         call_fun();
                        }
                    }
                });
                try
                {
                  Thread.sleep(time);
                }
                catch(InterruptedException e)
                {
                    Log.i("Error", null);
                }
              }
            }
        });
        t.start(); 
        }
    }

我在另一个名为RandomGeneration的函数中调用了这个函数。如果单击该按钮,则会调用randomgeneration,并且每次都会激活set timer。但每次点击后进度条运行得更快。它在同一特定时间内不断运行。例如,如果它在第一次单击时运行3秒,则在第二次单击时运行2秒并且变得更快。

任何人都可以尝试查找此代码中发生的情况。 在此先感谢.. !!

1 个答案:

答案 0 :(得分:1)

从我看到的每次点击按钮时都会创建新的线程。 也许尝试检查t是否已在运行,如果是,请更新它将进度设置为0的逻辑? 另外,if(flag)做了什么?