GALAXY Tab 上で EditText を UIスレッド(メインスレッド)以外で実行すると
「UI スレッド以外お断り!」でおなじみの
Can't create handler inside thread that has not called Looper.prepare() |
が発生する。
エミュレーター上では発生しないので…気づかなかった。
例えばサウンドノベル系のゲームを作り、推理をユーザー入力させたい時など、
画面を LinerLayout などに View を変えて実行する場合などあるかと思う。
この時ゲームループ上で、うっかりインスタンス生成やっちゃうとこの現象に
ハマる。
回避策は様々なサイトで解説されてますが Handler を使い、
runOnUiThread( new Runnable(){} ) で送ればOK。
依存しなそうなロジックかと思ってたのに…エミュでは問題なくても実機では
NG ってのはありますね。
おかげ様で #ifdef ANDROID が多い( ´д⊂
0 コメント:
コメントを投稿