Android Studio - Button ändert Farbe erst nach Delay?

dummycoders

Neues Mitglied
Hallo!

Wir haben ein kleines Problem mit unserer Quiz App.
Wir wollen bei einer richtigen/falschen Antwort den Button
in einer an die Antwort angepasste Farbe färben.

rot = falsch
grün = richtig

Code: https://pastebin.com/HkvhsbUY

Wenn wir jetzt auf ein richtiges klicken, dann ändert sich die Farbe erst
nach dem Delay. Was machen wir falsch?
 
Thread.sleep() legt den kompletten Thread lahm.
Nutzt lieber einen Handler für delays
Java:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
   @Override
   public void run() {
       // mach was nach 3s
   }
},3000);

BTW: Strings vergleicht man mit equals und nicht mit == 😉

Edit: in manchen Szenarien verursacht diese Variante memory leaks. Sollte das so sein muss der Handler und der Runnable als statische innere Klasse implementiert werden.
 
Zuletzt bearbeitet:
Thread.sleep() legt den kompletten Thread lahm.
Nutzt lieber einen Handler für delays
Java:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
   @Override
   public void run() {
       // mach was nach 3s
   }
},3000);

BTW: Strings vergleicht man mit equals und nicht mit == 😉

Edit: in manchen Szenarien verursacht diese Variante memory leaks. Sollte das so sein muss der Handler und der Runnable als statische innere Klasse implementiert werden.

Wir haben den selben Code grade gefunden, trotzdem Danke! 🙂
 
Naja grundsätzlich basiert die Aussage auf Erfahrungswerten.. War selbst mal auf dieses Problem gestoßen.
Nach längerem suchen bin ich dann auf eine Variante mit der statsichen Klasse gestoßen.
Wenn ich mich nicht irre aus folgenden Gründen (Berichtige mich falls ich falsch liege)
Es wird eine anonyme, nicht statische innere Klasse benutzt die implizit eine Referenz auf die äußere Klasse (die Activity) hält. Das wird dann zum Problem wenn der context der Activity vom GC gefressen wird.

Beim nachlesen bin ich gerade hier drauf gestoßen.
 

Zurück
Oben