2012-04-13 12 views
0

Ich habe eine Frage (here) über das Ändern von UI-Elementen in einer Timer-Aufgabe geschrieben, das ist jetzt in Ordnung.Howto ändern Sie einen Wert in einer TimerTask, die wegen eines anderen Thread in Android abstürzt?

aber wenn ich habe einen Code wie folgt:

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

die counterInt var wird in der Aktivität gespeichert, wo auch dieser Code in ist

wie diesen Wert zu ändern, ohne abzustürzen.?

+0

was für ein Unfall? – njzk2

Antwort

2

Ich denke, es gibt zwei Möglichkeiten:

1) countInt in ein Integer-Objekt Stellen und der Zugang zu synchronisieren ÜBERALL verwenden Sie es:

Integer countInt=0; 

synchronized(countInt){ 
    countInt++; 
} 

2) Verwenden Sie die AtomicInteger, die vielleicht sogar Arbeit besser, da es keine Threads blockiert. Dies verhindert, dass die Benutzeroberfläche gesperrt wird.

Verwandte Themen