2012/04/26

Android:静的解析ツールLintを使う

ADT16でAndroid Lint(静的解析ツール)がリリースされました。
Lintを使用することで潜在的な不具合を発見することができます。

発見できる不具合や詳細は下記を参照
・Android Tools Project Site
⇒http://tools.android.com/tips/lint
・Classmethod.dev()
⇒http://dev.classmethod.jp/smartphone/android-tips-8-android-lint-1/
・Bescottee
⇒http://andbrowser.com/development/knowhow/787/android-lint-check-rule-detail/

LintによるレポートはHTMLフォーマットをサポートしています。
下記のコマンドで実行が可能です。
lint <アプリフォルダパス> -–html <レポートファイル名>.html
# adbにパスが通ってない場合は %ANDROID_SDK_HOME%/tools 直下で実行してください。

実行すると、
Wrote HTML report to <レポート出力先パス>
のメッセージが表示され、解析結果がHTMLベースで出力されます。

HTMLフォーマットでは各項目の詳細情報へのアンカーリンクも貼られているので便利です。
レポートの内容は、解決方法までだいたい理解できるようになっています。

以上です。
2012/04/12

Android:Activity状態遷移タイムアウトによるPAUSE状態への遷移


Activityの状態遷移にはタイムアウトが設けられています。
特にPAUSE状態遷移のタイムアウトは500msecとシビアです。
PAUSEはActivityの切替パフォーマンスに直接影響を与えるため、他の状態遷移より短い
タイムアウトが設けられています。
# ActivityStackクラスのPAUSE_TIMEOUT定数辺りが参考になります


タイムアウトが500msecであることで注意すべきポイントはLowMemoryKillerと状態保存です。
ActivityのPAUSE状態は生存優先度が低く、LowMemoryKillerによるkill対象となり易くな
ります。

つまり、onSaveInstance~onPauseのForeground優先度が保証されるのはonSaveInstance
開始から500msec間のみということになります。
onPauseの完走に500msec以上を要する場合、「onPauseの実行途中に突然LowMemoryKiller
にkillされた...」ということが起こりえます。

onPauseで永続化したいデータの保存処理はonSaveInstanceの開始から500msec以内に収め
るのが吉です。

以上です。