2011-01-05 19 views
15

Ich bin neu Programmierung von Androiden, aber ich habe ziemlich viel Erfahrung Programmierung Brombeeren.invalidate() innerhalb einer Thread-Android-App

Ich habe eine App mit einer Aktivitätsklasse (main.java) und einer View-Klasse (game.java) erstellt.

Innerhalb der Ansichtsklasse habe ich einige Bitmaps auf dem Bildschirm gezeichnet. Ich habe einen Thread erstellt und die Bilder im Thread verschoben. Wenn ich jedoch invalidate() innerhalb des Threads aufruft, wird der Bildschirm nie neu gezeichnet.

Können Sie den Bildschirm nicht von einem Thread ungültig machen()? Ich weiß, dass der Thread ausgeführt wird und der Invalidate wird aufgerufen, es macht nur die Änderungen auf dem Bildschirm nie.

Antwort

26

Sie müssen View.postInvalidate() verwenden, wenn Sie es von einem Nicht-UI-Thread aufrufen. Laut docs:

public void postInvalidate() seit: API Stufe 1

Ursache eine Ungültigkeit auf einem nachfolgenden Zyklus durch die Ereignisschleife geschehen. Verwenden Sie diese Option, um die Ansicht aus einem Nicht-UI-Thread ungültig zu machen.

+0

Wow, das war zu einfach ... Ich habe nach den letzten 30 Minuten auf, wie es zu tun ist und ich bin nie einmal auf den PostInvalidate() gestoßen. – Dave

+1

Ja, einige Funktionen haben die schlechte Angewohnheit, von Dokumenten zu verschwinden, wenn man sie sucht;) – maid450