63

postInvalidate()Androidでの機能の使い方は何ですか?私はこの機能を多くの場所で見ています。私がグーグルで検索したとき、私はこれだけ出てきました:

postInvalidate --UIスレッドに無効化リクエストを投稿します

そこにある「リクエストを無効にする」というフレーズが何を意味するのかわかりません。誰かがここで何が起こっているのか詳細に説明できますか?

4

3 に答える 3

132

View クラスから派生した各クラスには、invalidateメソッドとpostInvalidateメソッドがあります。invalidate が呼び出されると、現在のビューが変更され、できるだけ早く再描画する必要があることをシステムに伝えます。このメソッドは UIThread からのみ呼び出すことができるため、UIThread にいない場合でも View が変更されたことをシステムに通知したい場合には、別のメソッドが必要です。postInvalidate メソッドは非 UIThread からシステムに通知し、View は UIThread の次のイベントループでできるだけ早く再描画されます。SDK ドキュメントでも簡単に説明されています。

invalidatepostInvalidateを比較するだけです。

于 2011-04-02T07:52:15.153 に答える
24

このメソッド ( ) により、非 UI スレッドからpostInvalidate()を無効化できます。from UI-thread useメソッドViewを無効にします。Viewinvalidate()

無効化とはView.onDraw(Canvas)、将来のある時点で (すぐではなく) メソッドを呼び出して全体を再描画することを意味します (が表示されViewている場合View)。

Android はViews を自動的に再描画しますが、「ねえ、これViewは変更されています。できるだけ早く再描画してください」と伝える必要がある場合があります。

詳細:

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

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

于 2011-04-02T07:54:02.203 に答える
4

簡単に言えば、invalidate()メソッドを UI スレッドからpostInvalidate()呼び出したり、非 UI スレッドから呼び出したりして、何らかの変更が加えられた後にカスタム ビューを更新するように Android に指示することができます。

于 2016-07-21T17:00:56.737 に答える