スレッドから別オブジェクトを触ると異常終了?!

 作成中のアプリに、SelectMenuを組み込んでみたところ、異常終了するようになってしまった。
 どうも、スレッドから別オブジェクトのView(UI系)に触ってはいけない決まりらしい。

 色々と調べてみたところ、その理由はスレッド間の同期にあるようだ。
 簡単にいうと、「個々に動いているスレッドで、勝手にイジくりまわされちゃかなわん」。
 まぁ、その理屈はわかるけどね。
 でも、コッチで作った変数に触っただけで、落ちる軟弱構造はどうよ?!

 それはそれとして。
 スレッドからの操作を行うための方法はあって、それがHandler らしい。
 Handler がスレッドからの通知を受け取り、溜まった通知を順番にLooper が実行していく…。
 そんな構造のようだね。
 なるほどねぇ。
 でも、ルーピーはイヤなネーミングだなぁ。オイラ、麻生支持者だし。(w

 対処方はわかったんで、試しにやってみたんだけど…。
 やってみると、問題が色々とでてくる。
 まず、変数が使えない。
 Handler はclass の中にclass を書くような記述のため、method 内で作った変数は参照できないみたいだ。(シンタックス・エラーになる)
 しかも、うまく動かない。
 なんか、Activity ともからんでいるようで、今の構造だとちと無理なようだ。
 どうもオイラの組み方は、とことん、Android と相性がわるいらしい。(w

 しかしこの、”class の中にclass がある” 書き方ってどうにかならんかね?
 ソースが見た目、すっきりしないし。
 iアプリやってたせいか、class をボロボロ作るのはどうもねぇ…。
 容量ケチりたがる貧乏性なだけだが。(笑

 まぁ、グチクヂいっててもはじまらない。
 Handler はスレッドを扱うゲームからすると、洗礼のようなもののようだし。
 どうにか対処を考えよう。

 こんな感じで対処してみたよ。

Comments are closed.