
Androidにおける Process Death (プロセス終了) とは、システムがメモリ不足(Memory Pressure)になった際に、バックグラウンドにあるアプリのプロセスを OS が強制的に終了させる仕組みのことです。
ユーザーがアプリを閉じたり明示的に終了させたりする「通常の終了」とは異なり、OS側の都合で実行されるため、適切な対策をしないとアプリに戻った際にデータが消えてしまう原因になります。
🤔 なぜ気ににする必要があるのか
長いお問い合わせフォームを入力中に、少し調べ物をして戻ったら全部消えていた。
ECサイトで商品を比較していたのに、トップ画面に戻された。
「このアプリは不安定だ」「使いにくい」と思われ、アンインストールや低評価に直結します。
🤔 予期せぬクラッシュを防ぐため
Process Death からの復帰時、OSは「最後に開いていた画面」をいきなり表示しようとします。
もし、その画面が 「前の画面から渡されたデータ(IDなど)」 に依存しているのに、それをメモリ上の変数(ViewModelのフィールドなど)にしか持っていなかった場合、復帰した瞬間にデータが null や空になり、アプリがクラッシュします。
🤔 「バックグラウンド=一時停止」ではない
Androidの設計思想では、アプリがバックグラウンドに回った瞬間から、いつ消されても文句は言えないことになっています。
「メモリが潤沢にあるから大丈夫だろう」という想定は、現代のAndroid(特にバックグラウンドで動くサービスや重いゲームが多い環境)では通用しません。
「プロセスは必ずいつか死ぬ」という前提で設計することが、Android開発におけるプロフェッショナルな作法とされています。
🤔 開発時の確認方法
以下で開発時に確認しておくのがいいです。
1. アプリを起動したあと、ホーム画面に移動する。(終了させるのではなくて、バックグラウンドに移動する)
2. adb shell am kill <アプリのパッケージ名>
3. アプリの起動履歴から再度アプリを選択する。
注意: am force-stop とは異なり、am kill はバックグラウンドにいるアプリに対して「メモリが足りなくなったからシステムが回収した」という状態をシミュレートします。
起動履歴から再度アプリを起動したときに、バックグラウンドに移動する前の画面と同じものが表示されれば OK です。
🤔 まとめ
上記手順でやってみました。

これでOK!!
Related Categories : Android・AndroidStudio・Developmemt・JetpackCompose・Kotlin・Newbie・Recommended