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"を前提に書いたプログラムで問題になる場合があります。

0 件のコメント:

コメントを投稿