0

我发布了一个关于如何在计时器任务中更改 UI 元素的问题(此处),现在很好。

但是当我有这样的代码时:

        countInt = 0;
        timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                countInt = countInt + 1;
            }
        }, 1000);

counterInt var 保存在此代码所在的活动中。

如何在不崩溃的情况下更改此值?

4

1 回答 1

2

我认为有两种可能:

1) 使 countInt 成为一个 Integer 对象并在您使用它的任何地方同步对它的访问:

Integer countInt=0;

synchronized(countInt){
    countInt++;
}

2)使用AtomicInteger,它甚至可能会更好,因为它不会阻塞任何线程。这可以防止 UI 锁定。

于 2012-04-13T07:27:47.003 回答