Java Problem

GMoN

GMoN

Dauergast
393
Vielleicht kann mir ein Java Experte erklären wieso mein Programm sonderbare Dinge macht, wenn ich text in eien TexView aus einem Timer schreiben will. Die textviews werden normal im onCreate definiert und der Timer wird dort auch gestartet. Ich vermute, dass der Text in irgendwelche Speicherbereiche geschrieben wird, wo er nicht hingehört. Es kommt aber keine Fehlermeldung. Hier mal die wichtigen Code Zeilen

Code:
...
TextView tv_mem;
final Timer timer = new Timer();

@Override
    public void onCreate(final Bundle icicle) {
     super.onCreate(icicle);
     setContentView(R.layout.main);
     tv_mem=(TextView)findViewById(R.id.text_mem);
     timer.scheduleAtFixedRate(task, 0, 2000);
     }

TimerTask task = new TimerTask() {
         public void run() {
             tv_mem.setText("MEM: ");
             ....
             
         }
         };
 
Hi,

es ist verboten aus einem Thread direkt auf GUI zuzugreifen.
Nur der Main-Thread darf das.

Ich nutze dafür ein Handler:

Code:
// in Activity:
 private Handler handler = new Handler();

// irgendwo weiter im Code
handler.post(new Runnable(){
       
       public void run() {   
               ...hier Zugriff auf GUI 
       }
                                
});
 
Vielen Dank für die Erklärung, das leuchtet ein.

Ist bei Symbian genauso gewesen, nur gab es da immer ne Exception und nicht son merkwürdiges Verhalten, nur habe ich im DDMS nix dergleichen bemerkt.
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.383
Data2006
D
L
Antworten
4
Aufrufe
1.316
lonnie9020
L
W
  • WuDiDong
Antworten
3
Aufrufe
755
jogimuc
J
Zurück
Oben Unten