天蓬老师2017-04-17 15:34:23
私が最も深く経験した効果は 2 つあります:
1. onCreate() メソッドで view.getHeight() を呼び出すと 0 が返されることは誰もが知っていますが、
で身長を取得します。
2. View.postDelayed() メソッドを使用して、一定期間内にビューを複数回クリックすることによって複数の不要なクリック イベントがトリガーされるのを防ぎます。
リーリー
高洛峰2017-04-17 15:34:23
投稿には Runnable が含まれています。これは、Runnable の作業が UI スレッドで実行され、UI を Runnable で直接更新できることを意味します。ただし、ここでの Runnable は新しいスレッドではないことに注意してください。ブロッキングによる ANR の発生を避けるために、あまりにも複雑で時間のかかる作業を実行しないでください。
怪我咯2017-04-17 15:34:23
View
にはデフォルトで Handler
があり、mainLooper
に属する View.post
はこの Handler.post
PHP中文网2017-04-17 15:34:23
Android APP は起動後にメインスレッドである UIThread を自動的に開始します。このスレッドは主にユーザー操作イベントやインターフェース描画イベントの配信に使用されます。したがって、より良いユーザー エクスペリエンスを維持するために、時間のかかる操作は他のスレッドで実行され、実行完了後に結果がメイン スレッドに返されて表示されます。ただし、UI を他のスレッドから直接操作することはできません。これには、スレッド間で情報を転送するメカニズム、つまりハンドラー、メッセージ キュー、ルーパーが必要です。
Android プラットフォームは主に次の方法で他のスレッドからメイン スレッドにアクセスします:
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)
ハンドラー
View.post の背後で実行されているプロセスについては、次の情報を参照してください:
DelayLoad の実装の一種と原理 (パート 2)
この分析を読むと、なぜ View が呼び出されるのかが理解できるでしょう。 onCreate では .post のみが View の高さを取得できます