らんだむな記憶

blogというものを体験してみようか!的なー

Activity#runOnUiThread

AndroidGUIコンポーネントに触るにはメインスレッドたるUIスレッドからでないとならない・・・。これを守らないと実行時例外に遭遇する。
考えてみると、実行時例外が「UIスレッド以外からUI更新するなよ!」というメッセージを吐き出すから自然とUIスレッドで触らないとと思わされている気がする。なんか知らんけど先生に怒られたのでやらないようにする、みたいな。
UIスレッド以外からGUIを更新できるフレームワークをいまのところ知らないが、考えてみると公式文書での説明を読んだような読んでないようなあやふやなところである。
Activity  |  Android Developersを見ても根源的なことは記載されていない。

Cross Reference: /frameworks/base/core/java/android/app/Activity.javaの6280行目あたりが実装である。

c# - Why is only the UI thread allowed to modify the UI? - Stack Overflowによると、Javaのケースでは

Several GUI frameworks have this limitation. According to the book Java Concurrency in Practice the reason for this is to avoid complex locking.

という感じのことが書いてあるらしい。