Monthly Archives: 8月 2009

TabActivityの罠

画面を回す(landscapeにする)とフォアグラウンドなActivityはpause→stopしタブにある全ての生成済みActivityがdestroyされる。
それだけなら良いのだが、隠れているものも含めて全てのActivityが即座に再createされる。しかし隠れているタブはresumeされない。つまり、バックグラウンドのActivityに対してonCreateが呼ばれ(下手すると永久に)onResumeが呼ばれないシチュエーションが発生しうる。
よって、onFirstResumeな処理をonCreatedに書いてはいけない。ライフサイクルにおいて可視ライフタイムはonStartからフォアグラウンドライフタイムはonResumeから始まるとされているが、onCreateの後すみやかにonStartやonResumeが呼ばれることを期待した実装はできない。少なくともTabActivityは実際にその前提を逸脱する動作をするのである。
onCreateの後、onResumeされないと、そのままonDestroy直行すら有り得るし、実際その動作もTabActivityで容易に起こる。
ドキュメントには、
onCreate()→Always followed by onStart().
onStart()→Followed by onResume() if the activity comes to the foreground, or onStop() if it becomes hidden.
のように書かれており、つまり実装かドキュメントかどちらかが間違っている。
ただどうもこの辺りの実装は怪しい。具体的に言うとListActivity周辺がきちんと考慮された実装になっていないように見受けられる。おかげでTabActivityとListActivity(の類)の相性が猛烈に悪い。
実際、TabActivityのそれぞれのタブにExpandableListActivityとListActivityを配置してタブ切り替えと縦横回転を数回やると簡単に例外死する。ListActivityだけなら問題ないようだがExpandableListActivityと併用するとまさに即死である。
日本Androidの会に質問投げてみたのだがレスが付かなくて色々探してたら
http://code.google.com/p/android/issues/detail?id=3443
OHAの方にバグとしてissue上がってた。Activityを直継承して全部自分で実装すればいいよみたいなレスが付いているがそういう問題じゃねーだろと思う。
このような動作をするのは見たところTabActivityだけなのでとりあえずTabActivityは使わないことにした。
どちらにしても一貫して貰えないと困る。

ドコモにRachaelクルー?

NTTドコモ、スマートフォン拡充 「グーグル携帯」など

サムスンから調達するのは、米マイクロソフトの携帯向け基本ソフト(OS)「ウィンドウズモバイル」を搭載した機種。サムスンはソフトバンクモバイルに現在、通常の携帯電話5機種を供給しているが、海外で30機種以上販売するスマートフォンを日本市場に投入するのは初めて。ソニー・エリクソンからは米グーグルが開発した携帯向け無償OS「アンドロイド」を搭載した「グーグル携帯」を調達する

まーーじーーでーーー
SamsungがAndroidを投入「しない」こともある意味びっくりだけど、ソニエリはRachaelひっさげてドコモ再上陸ですか。
あー…あーーーー……どうしようかなぁ

HT-03Aの検索ボタン

ADP1には付いてないけどHT-03Aには付いてるので一応調べてみた。
動作確認はエミュで可能。F5を押すと検索ボタンを押したイベントが起こせる。
押すとonSearchRequested()イベントが発生するのでここをオーバーライドして引っ掛ける。

Android Marketはクソ

先日の続き。
AppStoreも同様にもしくは別の意味でクソではあるがあまり興味ないので除外。
あ、でも一応補足。先日アプリのアフィリエイトやるべきではということを書いたのだけど、AppStoreは一応アプリのアフィリエイトがある。というかあるのは知ってたけど実は細かいこと知らなくてさっき始めてAppleのページでトップだけ見た。4%?ハァ?まぁそりゃ「iPhoneアプリのレビューだけで食っていくぜ」みたいなレビューは見かけないはずだわ。以上iPhoneについては終わり。
以下、Android Marketのクソな点。

Read more …

携帯でARは

正直当たらないと思っている
個人的に、現実世界とネットを携帯を介してマッシュアップさせるためのインターフェースとしては、パッシブなインターフェースとしてのGPS(AndroidのLocaleアプリは素晴らしい可能性を示唆している)、アクティブなインターフェースとしてのバーコード(もっとしゃぶりつくすべきだ)、の二つを推したい。
GPSをアクティブに使うのは技術デモ的な変なナビという域を越えられないと思う。