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 設定

シークエンスパパとも 本物の霊能力

和歌山(?)の女性宮司の霊能力者を特定した