2011-01-05 10 views
15

Jestem nowy w programowaniu androidów, ale mam spore doświadczenie w programowaniu jeżyn.unieważnić() wewnątrz wątku Android app

Stworzyłem aplikację, która ma klasę aktywności (main.java) i klasę widoku (game.java).

Wewnątrz klasy widoku mam kilka bitmap, które są rysowane na ekranie. Stworzyłem wątek i przenoszę obrazy w wątku. Jednak kiedy wywołuję invalidate() wewnątrz wątku, nigdy nie przerysowuje on ekranu.

Nie jesteś w stanie unieważnić() ekranu z wątku? Wiem, że wątek jest uruchomiony i wywoływana jest funkcja unieważniania, po prostu nigdy nie wprowadza zmian na ekranie.

Odpowiedz

26

Musisz użyć View.postInvalidate(), jeśli wywołasz go z wątku innego niż UI. Według docs:

public void postInvalidate() Od: poziom API 1

spowodować invalidate się zdarzyć na kolejnym cyklu przez pętlę zdarzeń. Użyj tego, aby unieważnić widok z wątku innego niż UI.

+0

Wow, które było zbyt łatwe ... Szukałem ostatnich 30 minut, jak to zrobić i nigdy nie natknąłem się na postInvalidate(). – Dave

+1

Tak, niektóre funkcje mają zły nawyk znikania z dokumentów podczas ich wyszukiwania;) – maid450

Powiązane problemy