ActivityのisFinishingで破棄される理由を確認する

ActivityのisFinishingでわかること

公式ドキュメントのonDestroyの章では、以下2つのシナリオを区別するのに用いると書かれています。

  1. アクティビティが終了する(ユーザーがアクティビティを完全に閉じるか、アクティビティに対して finish() が呼び出さたことによる)。
  2. 構成の変更(デバイスの向きの変更やマルチウィンドウ モードなど)に伴いアクティビティが一時的に破棄される。

つまりは、Activityの破棄が構成の変更によるものか、それ以外かがわかります。 isFinishingtrueになるのは、明示的にfinish()をプログラム中で呼び出す他、ユーザのバックキー動作やアプリを閉じる動作をした場合です。

isFinishingfalseになる場合

状況 動作確認
画面回転をした時
マルチウィンドウに変わる時

isFinishingtrueになる場合

状況 動作確認
finish()呼び出し
バックキー押下時
実行中アプリ一覧から閉じられた時※1

※1 実行中アプリ一覧から閉じられた時

f:id:go_takahana:20210315090523g:plain:w320
実行中アプリ一覧から閉じられた時