gpt4 book ai didi

java - 如何在android中使用计时器设置进度条?

转载 作者:行者123 更新时间:2023-11-30 04:19:03 27 4
gpt4 key购买 nike

我已经学会了如何让进度条与特定任务一起工作 from here .

但我在我的应用程序中使用了计时器。基于该值,我想设置 ProgressBar。

那么怎么做呢。 ?

我已经让这个线程工作了。代码:

// Start lengthy operation in a background thread         
progressThread = new Thread(new Runnable() {
public void run() {
while (mProgressStatus < 100) {
mProgressStatus = doWork();
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(mProgressStatus);
}
});
}
}
});

progressThread.start();

我知道我必须执行连续将 int 数据返回到 progressStatus 的任务。但是我不知道如何用计时器来做。所以请帮助我。

谢谢。

最佳答案

你的问题似乎是你的 doWork() 方法(正如你在评论中提到的那样,该方法没有做任何事情)。如您所见,progressBar 的进度取决于此方法:

mProgressStatus = doWork();

假设您的天文钟每秒更新一次,因此 progressBar 将在 100 秒后填满。为了实现这一点,您的 doWork 方法应该返回经过的秒数的递增值,即 1、2、3...到 100。但仅返回该值是不够的,因为使用您当前的代码,progressBar 将立即填充。
最简单的解决方案是:

mProgressStatus = 0;
progressThread = new Thread(new Runnable() {
public void run() {
while (mProgressStatus < 100) {
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(mProgressStatus);
}
});
mProgressStatus ++;
android.os.SystemClock.sleep(1000); // Thread.sleep() doesn't guarantee 1000 msec sleep, it can be interrupted before
}
}
});

progressThread.start();

希望对您有所帮助,
谢尔盖。

关于java - 如何在android中使用计时器设置进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com