2011年7月2日土曜日

アプリ終了:Homeキー押しと、Backキー押し

小ネタ。
��大ネタ書いたことないけど

普通にAndroidアプリ使ってると、アプリを終了したい時に、以下どっちかをします。
・Homeキーを押して待受へ。
・Backキーを押して、アプリ起動前画面へ。

使ってる限りは、どっちも終了しているように思えますが。

実は、両者は明確に動作が違います。

・Homeキー押しは、「中断」です。
・Backキー押しは、「終了」です。

Homeキーを押したときは、アプリが終了するわけではなくて、
Homeアプリ(待受)が、「割り込みで起動している」という動作になります。

これは、知っておいたほうがいいです。

実際、適当なアプリ作って、onDestroy()にブレーク貼っておくと、
前者はonDestroy()が呼ばれず、後者は呼ばれます。

例えば、アプリ内から起動するサービスが、アプリ終了後も操作して欲しい場合(*1)、
Homeキー押しだと、Activityが中断、つまり、存在したままになるので、
Activity→Serviceの参照が残るので、Serviceはそのまま存在し続けます。
これがBackキー押しの場合、Activityは消えますので、Activity->Serviceの参照関係が消えるため、
ServiceまでGarbase Correctionされることがあります。

永続的に起動しときたいServiceは、Intent経由で起動しておくと、ちゃんと永続化してくれますが、
デバッグ時は、ちょっと注意しておいたほうがいいですね。

(*1) ここに書いたけど、
実は、こういう時以外、Serviceって使うべきじゃないんだけどね

0 件のコメント:

コメントを投稿