我有一个应用程序,可以处理日期和时间,还可以显示进度条,该进度条指示从一个日期到另一个日期所经过的时间百分比。因此,如果date1是2019-07-05 05:00 pm,date2是2019-07-05 07:00 pm,当前时间是2019-07-05 06:00 pm,则该百分比为50%,因为50%的时间是从date1到date2被保留。
然后在活动开始时,我计算时间百分比,并使用setProgress()在进度条上设置此值。尚无问题,一切正常。现在的问题是我是否可以创建一个线程,该线程休眠1秒,然后计算新百分比,因为当前时间已更改,并且将值设置为进度条。这将每1秒重复一次,直到完成活动为止。那是一个不好的方法吗?我每1秒运行一次代码时就想到性能。这是一个好习惯吗?我可以这样做吗?
答案 0 :(得分:1)
考虑改用Timer
或Handler
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
updateProgress();
handler.postDelayed(this, 1000L);
}
};
void doWork() {
// do one of these, either handler or timer
handler.post(runnable);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
updateProgress();
}
}, 0L, 1000L);
}
答案 1 :(得分:0)
如果它是您应用程序的关键部分,那还不错。您甚至可以每1/60秒循环播放一次,因此您的酒吧将以60fps的速度更新,并且没有问题。
但是我建议使用Timer
,因为您只重复一秒钟,而且停止它也更容易。