Androidのinvalidate()
とpostInvalidate()
の違いは何ですか?それぞれはいつ呼び出されるのですか?メソッドはView
まで拡張されたクラスでのみ呼び出される必要がありますか?Androidのinvalidate()メソッドとpostInvalidate()メソッドの違いは何ですか?
19
A
答えて
33
UI Thread
から図面を再描画する場合は、invalidate()
メソッドに呼び出すことができます。
Non UI Thread
からビューを描画する場合は、postInvalidate()
メソッドを呼び出すことができます。
Viewクラスから派生した各クラスには、invalidateメソッドとpostInvalidateメソッドがあります。 invalidateが呼び出されると、現在のビューが変更されたことをシステムに通知し、できるだけ早く再描画する必要があります。このメソッドはあなたのUIThreadからしか呼び出せないので、あなたがUIThreadにいなくても、あなたのViewが変更されたことをシステムに通知したいときは、別のメソッドが必要です。 postInvalidateメソッドはUIThread以外のシステムからシステムに通知し、UIThread上の次のイベントループではできるだけ早く再描画されます。また、まもなくSDKドキュメントで説明されています。
UPDATE:
(のようなUI更新右離れを持っていない)、この他のスレッドからpostInvalidateを使用して生じるいくつかの問題があります。
runOnUiThread(new Runnable() {
public void run() {
myImageView.setImageBitmap(image);
imageView.invalidate();
}
});
関連する問題
- 1. Rubyのputメソッドとwriteメソッドの違いは何ですか?
- 2. Objective Cのメソッドと+メソッドの違いは何ですか?
- 3. FirebaseのaddListenerForSingleValueEventメソッドとaddChildEventListenerメソッドの違いは何ですか?
- 4. LinkedListクラスのelement()メソッドとgetFirst()メソッドの違いは何ですか?
- 5. 動的メソッドと仮想メソッドの違いは何ですか?
- 6. static structメソッドとstatic classメソッドの違いは何ですか?
- 7. Android:TextViewがinvalidate()またはpostInvalidate()で更新されない
- 8. の違いは何だ - メソッド
- 9. PlayN Graphicsインターフェイスでは、heightメソッドとscreenHeightメソッドの違いは何ですか?
- 10. JavaのURLクラスのgetHostメソッドとgetAuthorityメソッドの違いは何ですか?
- 11. Spring Batch JobExecutionクラスのgetAllFailureExceptions()メソッドとgetFailureExceptions()メソッドの違いは何ですか?
- 12. Pythonの文字列メソッドとstrメソッドの違いは何ですか?
- 13. メソッドのオーバーロードとオーバーライドの違いは何ですか?
- 14. mongo DBのupdateManyメソッドとの違いは何ですか?
- 15. メソッドとフリー関数の微妙な違いは何ですか?
- 16. 流暢なインターフェースとメソッド連鎖の違いは何ですか?
- 17. 異なるBeginTransactionメソッドの違い。以下でBeginTransactionメソッドの違いは何
- 18. GETメソッドとPOSTメソッドの違いは?
- 19. +と - メソッドのプロパティを定義するときの違いは何ですか?
- 20. C#では、クラスのデストラクタとFinalizeメソッドの違いは何ですか?
- 21. デザイン時にカスタムボタンのInvalidate()メソッドが機能しないのはなぜですか?
- 22. KineticJS描画メソッドの違いは何ですか?
- 23. さまざまなHTTPメソッドの違いは何ですか?
- 24. insert()、insertOne()、およびinsertMany()メソッドの違いは何ですか?
- 25. 2つのメソッドとrefオブジェクトparとwithoutの違いは何ですか?
- 26. Actionscript 3では、 "in"演算子と "hasOwnProperty"メソッドの違いは何ですか?
- 27. JS関数内のメソッドとそのプロトタイプの違いは何ですか?
- 28. ルビーのself.methodとクラス<< selfのメソッドの違いは何ですか?
- 29. アプリの設定とレジストリの違い.NETの推奨メソッドは何ですか?
- 30. WCF。サービスの非同期メソッドと同期メソッドのパフォーマンスの違いは何ですか?
は、postInvalidate()とまったく同じではありませんか? – rupps
アンドロイドのサンプルコード:http://developer.android.com/training/custom-views/index.htmlには、内部にプロパティゲッタとセッタを持つPieChart.javaがあります。ほとんどのプロパティ設定ツールはinvalidate();を呼び出します。 PieChart.javaはUIスレッドではありません。どうしてそこから無効化を呼び出すことができますか? (主なスレッドである主なアクティビティーjavaファイルがあります)。私はpostinvalidate()の呼び出しを期待していました。彼らはPieChart.javaのonDrawメソッドの下でそれをやったのと同じように。 – Simon
@Simon私はコードを見ていませんが、PieChart.javaは、スレッドを拡張したり別のスレッドを別の方法で使用するよう指定していない限り、UIスレッドでは動作します。起こりそうなことは、円グラフが描画されていることです。円グラフの 'onDraw'内で' postInvalidate() 'が呼び出され、UIスレッドのビューに円グラフを描画します。 –