Handler(mainLooper).post() を使うやり方と、runOnUithread() を使うやり方の違い

基本的に runOnUiThread() は Handler(mainLooper).post() へのラッパーとして用意されているが、メイン UI スレッドから実行する場合は挙動が異なる

メイン UI スレッドから実行した場合は、Handler(mainLooper).post() されずにスルーされて、そのまま Runnable の内容を実行する扱いとなる。なので、View の再描画など、強制的にタスクを発生させたいがために Handler(mainLooper).post() したい場合に、メイン UI から runOnUiThread() を使っても無意味なので、この場合は明示的に Handler(mainLooper).post() を記述して実行する必要がある。

cf. runOnUiThread vs Looper.getMainLooper().post in Android

コメント

このブログの人気の投稿

清水俊史『上座部仏教における聖典論の研究』

OpenWrt での Wi-Fi 設定

シークエンスパパともの先見の明