小ネタ。
��大ネタ書いたことないけど
普通に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 件のコメント:
コメントを投稿