Java Problem

  • 2 Antworten
  • Letztes Antwortdatum
GMoN

GMoN

Dauer-User
484
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
3.725
Data2006
D
N
  • no1Ltan
Antworten
5
Aufrufe
376
swa00
swa00
L
Antworten
4
Aufrufe
1.524
lonnie9020
L
Zurück
Oben Unten