Hi,
ich habe hier ein lustiges Problem mit einem ProgressDialog, der einfach nicht dargestellt wird. Lediglich im Debugger beim Singlestepping poppt er manchmal auf, aber aktualisiert wird er nie.
Die ganze Story:
Ich habe eine von View abgeleitete Klasse "DrawCanvas", in der in die onDraw()-Methode überschreibe, um darin ein paar Grafiken darzustellen. Mein erster Ansatz war so, dass ich aus der Activity heraus aus einem onClick()-Handler (Button-click des Users) eine Methode innerhalb dieser Klasse DrawCanvas aufgerufen habem welche mir die Grafiken aus dem Netz lädt um sie dann zu zeichnen. Zum Beginn dieser Download-Methode wird eine Message an einen Handler innerhalb der Activity gesendet, welche das Erzeugen und Öffnen des Progressdialoges veranlasst, während des Downloads wird der Downloadfortschritt ebenfalls per Message-Objekt an den Handler im ProgressDialog aktualisiert.
Nachdem weder der ProgressDialog noch dessen Statusaktualisierungen sichtbar geworden sind, jabe ich mir gedacht, dass sich die GUI irgend wie selbst blockiert, da alles aus dem onClick()-Event heraus aufgerufen wird. Also habe ich den Code so abgeändert, dass onClick() einen neuen Thread erzeugt und die Download-Methode meines DrawCanvas nur aus der run()-Methode dieses Threads heraus aufgerufen wird. onClick() kehrt also unverzüglich zurück während die eigentliche Arbeit anschließend aus diesem separaten Thread heraus erledigt wird. Allerdings bringt das keinerlei Verbesserung.
Bereits überprüft und als Fehlerursache ausgeschlossen:
- die Messages zum Öffnen/Aktualisieren werden ordnungsgemäß abgeschickt, empfangen und verarbeitet
- der Thread läuft tatsächlich, er wird also korrekt mit start() gestartet
- alle GUI-Aktivitäten werden aus dem Handler heraus im Kontext des GUI-Threads ausgeführt, hier gibt es also keine doofe Exception
Woran kann das jetzt noch liegen, dass mein ProgressDialog nicht zu sehen ist?