過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/01/29
Android 実機とエミュレーターで違う事01

 
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 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。