2011-04-02 46 views
55

Android'de postInvalidate() işlevinin kullanımı nedir? Bu işlevi bir çok yerde görüyorum. Ben google'dan zaman, bu kadar çıktı:PostInvalidate() ne yapar?

postInvalidate-- yazı UI-iş parçacığı üzerinde bir invalidate isteği

Ben ifade "isteği geçersiz" bilmiyorum orada anlamına geliyor. Birisi burada neler olduğunu detaylı olarak açıklayabilir mi? Profil sınıfından türetilir

cevap

110

Her sınıf invalidate ve postInvalidate yöntemi vardır. Geçersizlik çağrılırsa, sisteme mevcut görüşün değiştiğini söyler ve mümkün olan en kısa sürede yeniden çizilmelidir. Bu yöntem sadece UIThread'inizden çağrılabileceğinden, UIThread'de olmadığınızda ve View görünümünüzün değiştirildiğini bildirmek istediğinizde başka bir yöntem gereklidir. PostInvalidate yöntemi, sistemi UIThread olmayan bir sistemden haberdar eder ve View bir sonraki olayda UIThread'de en kısa zamanda yeniden çizilir. SDK belgelerinde de briefly explained.

Sadece geçersiz kılındı ​​ ve postInvalidate.

+1

Cevabınız için teşekkürler. Şimdi anladım. – rogerstone

+1

Cevabınızdaki mantıkları görüyorum, ancak invalidate() ayrıca UI olmayan sınıfımda da çalışıyor. PostInvalidate() gibi iyi çalışır. – JustBasti

+1

Harika cevap. Android dokümanları, Görüntülemeyi yeniden çizmeyi amaçladığını açıklamıyor. Doğru temizlendi :) – Andy

19

Bu yöntemle (postInvalidate()), UI olmayan iş parçacıklarından View geçersiz kılabilirsiniz. UI-thread kullanımı invalidate() yönteminden bir View geçersiz kılmak için. View.onDraw(Canvas) yöntem biz bütün yeniden çizmek için gelecekte (hemen değil) bir noktada denilen olacağı

geçersiz kılma anlamına gelir View (View olarak görünürse).

Android, otomatik olarak View nu yeniden çiziyor, ancak bazen "Hey, bu View değiştirildi, en kısa sürede yeniden çizildi." En

Daha: Basit bir deyişle

http://developer.android.com/guide/topics/ui/how-android-draws.html

http://developer.android.com/reference/android/view/View.html#invalidate%28%29

+1

Çok teşekkür ederim – rogerstone

1

, invalidate() yöntem UI Thread çağrılabilir ve postInvalidate() güncellemek için android anlatmak amacıyla UI Konu çağrılabilir Bazı değişiklikler yapıldıktan sonra Özel Görünümümüz.