我在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秒并且变得更快。
任何人都可以尝试查找此代码中发生的情况。 在此先感谢.. !!
答案 0 :(得分:1)
从我看到的每次点击按钮时都会创建新的线程。
也许尝试检查t
是否已在运行,如果是,请更新它将进度设置为0
的逻辑?
另外,if(flag)
做了什么?