Moja odpowiedź na this question została właśnie zaakceptowana, ale zacząłem zastanawiać się, kiedy dokładnie trzeba unieważnić() widok, a kiedy nie jest to konieczne?Kiedy konieczne jest wykonanie metody invalidate() w widoku?
Po nieco myślenia doszedłem do wniosku, że to powinien pracy mniej więcej tak:
- rzeczywisty rysunek „wszystkiego” występuje po
onResume()
- w „wolnych” części czasowych ekran może być przerysowana, ale tylko te, które były
invalidated
(wszystko pod spodem)
Dlatego wydaje się, gdybym coś zmienić po onResume()
(np. w odpowiedzi na kliknięcie przycisku, powinienem invalidate()
zmieniony View
).
Jednak z tego, co mówi scana w this question, musi być bardziej złożona i zależy od tego, jakiej metody używa.
E.g. od tego, czy ktoś używa
lastClicked.setImageBitmap();
lub
lastClicked.setImageResource();
Więc, kiedy jest to konieczne do wykonania invalidate() na widoku i jak to naprawdę działa?
Niektóre poprawia zdania, ale błędne podejście. !! -1 – ncm