2009年8月アーカイブ

画面を回す(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は使わないことにした。
どちらにしても一貫して貰えないと困る。

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

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

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

ADP1には付いてないけどHT-03Aには付いてるので一応調べてみた。

動作確認はエミュで可能。F5を押すと検索ボタンを押したイベントが起こせる。
押すとonSearchRequested()イベントが発生するのでここをオーバーライドして引っ掛ける。

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

以下、Android Marketのクソな点。

正直当たらないと思っている

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

サンプルも無いしドキュメントも断片的すぎエスパーきぼんぬ

SimpleCursorAdapter.ViewBinderを継承したクラスを作り、それをSimpleCursorAdapterを継承したクラスのコンストラクタでsetViewBinder(new MyViewBinder());のように与える。
SimpleCursorAdapter.ViewBinderは
public boolean setViewValue(View view, Cursor cursor, int column_index)
を実装する必要があり、列名COL_KEY_1のところをいじりたい時は、cursor.getColumnIndex(COL_KEY_1) == column_indexが成立した時COL_KEY_1のターン!なので、バインド時にCOL_KEY_1と対応させたviewにキャストしていじってsetText()とかすれば良い。

TabWidgetがあまりにどうしようもないので当面デフォルトテーマで作ることにした...
黒背景って読みにくくね?なんでこっちをデフォルトにしたんだろう。

ハドソン iPhoneアプリ統括の柴田真人氏が1年を振り返る 予想外の市場の変化を痛感するが、今後の可能性にも期待

絵に描いたようなアタリショックすなぁ。
Android Marketも他人事じゃないというか同じことになるでしょうな。

Life is beautiful: GoogleのAndroid向けのアプリビジネスはなぜ魅力的ではないか?

WebKit搭載の携帯が普及すればネイティブアプリなんて不要だから携帯アプリはHTML5+JavaScriptでいいんじゃね的な話。
まあある程度はそうだと思う。AndroidもiPhoneも最大公約数的に対応できるんだから、Androidで言うところのActivityに相当する部分はある程度それで足りる。
iPhoneが出て、Androidが出て、PalmPreが出て、みんなWebKitで遠からずHTML5のパラダイス。ずっと言われてきたことだしそれはそれであるだろう。

単にPreference項目として定義しておいて、PreferenceActivityのonCreateでfindPreferenceを使って取得し、あとはsetOnPreferenceClickListenerでもなんでも好きにすればいいんじゃないの。

2012年4月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

あわせて読みたい

あわせて読みたいブログパーツ

Twitter

Twitter Updates

    follow me on Twitter

    最近のコメント