在活动打开时每1秒循环一次线程是一种不好的做法吗?

时间:2019-07-05 22:27:11

标签: android loops

我有一个应用程序,可以处理日期和时间,还可以显示进度条,该进度条指示从一个日期到另一个日期所经过的时间百分比。因此,如果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秒运行一次代码时就想到性能。这是一个好习惯吗?我可以这样做吗?

2 个答案:

答案 0 :(得分:1)

考虑改用TimerHandler

    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,因为您只重复一秒钟,而且停止它也更容易。