AndroidでのpostInvalidate()
関数の使用は何ですか?私は多くの場所でこの機能を見てきました。私がグーグルで検索したとき、私はこれだけで出てきました:
postInvalidate-- Iスレッドで無効化リクエストを送信
「リクエストの無効化」というフレーズの意味がわかりません。誰かがここで何が起こっているのか詳細に説明できますか?
Viewクラスから派生した各クラスには、invalidateおよびpostInvalidateメソッドがあります。 invalidateが呼び出されると、現在のビューが変更されたことをシステムに通知し、できるだけ早く再描画する必要があります。このメソッドはUIThreadからのみ呼び出すことができるため、UIThreadにいないときにビューが変更されたことをシステムに通知する場合は別のメソッドが必要です。 postInvalidateメソッドは、非UIThreadからシステムに通知し、UIThreadの次のイベントループでビューをできるだけ早く再描画します。また、SDKドキュメントでは 簡潔に説明 です。
invalidateとpostInvalidateを比較するだけです。
このメソッド(postInvalidate()
)により、非UIスレッドからのView
を無効にできます。 UIスレッドからView
を無効にするには、invalidate()
メソッドを使用します。
無効化とは、View.onDraw(Canvas)
メソッドが将来のある時点で(すぐではなく)View
全体を再描画するために呼び出すことを意味します(View
が表示されている場合)。
AndroidはView
sを自動的に再描画しますが、「このView
が変更されました。できるだけ早く再描画してください」と伝える必要がある場合があります。
詳細:
http://developer.Android.com/guide/topics/ui/how-Android-draws.html
http://developer.Android.com/reference/Android/view/View.html#invalidate%28%29
簡単に言うと、invalidate()
メソッドはUIスレッドから呼び出され、postInvalidate()
は非UIスレッドから呼び出されて、Androidいくつかの変更が加えられた後のカスタムビュー。