0

タイマータスクでUI要素を変更する方法についての質問(ここ)を投稿しましたが、これで問題ありません。

しかし、私がこのようなコードを持っているとき:

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

counterInt varは、このコードも含まれるアクティビティに保存されます。

クラッシュせずにこの値を変更するにはどうすればよいですか?

4

1 に答える 1

2

私は2つの可能性があると思います:

1)countIntをIntegerオブジェクトにし、それを使用するすべての場所でアクセスを同期します。

Integer countInt=0;

synchronized(countInt){
    countInt++;
}

2)AtomicIntegerを使用します。これは、スレッドをブロックしないため、さらに適切に機能する可能性があります。これにより、UIがロックするのを防ぎます。

于 2012-04-13T07:27:47.003 に答える