2012年1月18日水曜日

Activity#onDestroy()はいつ呼ばれるのか?

今日見つけた、このIssueにやられました。
Issue 7033: OnDestroy not being called (on N1 running 2.1 latest)
http://code.google.com/p/android/issues/detail?id=7033


うすうす気づいてましたが、Activity#finish()を呼んでも、onDestroy()は期待通りに呼ばれるとは限らないようです。
Androidのアプリを書いたことがあれば、Activityのライフサイクル図は何度も見ていると思います。

http://developer.android.com/reference/android/app/Activity.html
ライフサイクルの終盤にあるonDestroy()へ伸びる矢印の説明を読んだなら、finish()を呼べば速やかにonDestroy()が呼ばれると期待するでしょう。しかし、そうならないケースが存在します。この事は、launchMode="singleInstance"を前提に書いたプログラムで問題になる場合があります。

2012年1月15日日曜日

初期化したらIDEOS U8800快調

リセットの度にホーム画面のウィジェットが消えるのが不便だったので、プリインストールのAlllBackupでアプリケーションをバックアップし、リカバリーモードでユーザーデータを全て消去してみました。以後、快調です。3日位使っていますが、勝手にリセットする事は一度も無く、今は連続稼働時間が59時間を越えています。β版で保存したシステムデータをNormal版で復元したのが良くなかったようです。何か非互換部分があったのでしょう。

xda-developerのForumでは、同じビルド番号のNormal版で「英語版より中国語版の方が調子がいい」とか書いてる人が居ますが、間違いなく勘違いですね。二つのバイナリ(UPDATE.APP)を比較しましたが差分は無く、md5ハッシュを比べてみても完全に同じです。違うのは、アップグレード方法を書いた同梱のPDFだけでした。

2012年1月13日金曜日

Ubuntu 11.10/x86でICSビルド


Shuttle XS35(Atom D510)に2GB memoryというシステムで動いているUbuntu 11.10(x86,32bit)でIce Cream Sandwichをビルドしてみました。

make -j 4 でfull_panda-engのフルビルドにかかった時間は2時間強。
ほぼ同じ設定で、ビルドするのはコレが3回目。カーネルは無し。
16914.10user 1895.84system 2:11:02elapsed
因みに、ccacheの状況はこんなもん↓。
6GBも使ってませんが、64bitならば、もっと大きくなるでしょう。

cache hit (direct)                     0
cache hit (preprocessed)           64493
cache miss                         26336
called for link                     3101
compile failed                         3
couldn't find the compiler             1
unsupported source language         2729
unsupported compiler option          525
files in cache                     52672
cache size                           5.5 Gbytes
max cache size                      20.0 Gbytes
ビルドは出来たのですが、残念なことに、動かす実機を持っていません。


IDEOS U8800 2011年末バージョン

仕事納めの2011年12月28日に、betaでないバージョン(V100R001C00B522G001)が公開されました。もちろんアップーデートしましたが、あまり改善した印象はありません。落ちるときは落ちるし、何より困るのは、リブート後にHome画面のウィジェットが全て消えてしまう事です。「Fast Bootをチェックするとおk」とか言う書き込みもありましたが効果なし。ユーザーデータをクリアしたら直ったとかいう人もいましたが、復旧にたっぷり時間がかかりそうなので、最後の手段と思っています。

ログが出ない件は、xda-developerに投稿されていた設定方法で解決しました。logcatは問題なく動いています。