ActivityのonStopは必ず実行されるから安心していい

androidのActivity(やFragment)を使う上で、ライフサイクルが重要なことはしばしばいわれます。

しかし、よく分からないこともありました。

「onStopが呼ばれないままActivityがDestroyedに至るのは、どういう状況か」

多くのブログなどは、単にandroid公式の図だけコピーして「onStopとonDestroyは実行されない場合があります」と書くだけですが、手元で動かすと、onStopは実行されるんですよね(一方、onDestroyは、backボタンでアプリを消す以外の方法だと、だいたい呼ばれてないような)。で、onStopが呼ばれないケースって何だろうと思ってましたが、色々見ていたら公式に書いてありました。

developer.android.com

Starting with Honeycomb, an application is not in the killable state until its onStop() has returned.

Honeycombですよ奥さん!バージョン3.x、2011年デビューのあのHoneycombですよ!Honeycomb、Google Playの「プラットフォームのバージョン」には掲載さえされてないんですよ!

というわけで、Honeycomb以降はonStopが呼ばれるまではkillableにならない以上、現実的にはonStopは必ず実行されると考えていいと思います。いい加減、ライフサイクルの図も改訂してほしいなあ。