Diary

Diary

日々学んだことをアウトプットする場として初めてみました

Android における Process Death

Process Death とは

アプリがバックグラウンドで動いている場合などに、リソースの都合で Android システムがアプリを停止させること。

Android Studio で Process Death 実行

Android Studio で Process Death と同等のことをするには、Logcat 画面の端に存在する赤い四角ボタンを押します。

f:id:kokoichi206:20220128035324p:plain

問題点と対策

問題点

当たり前ですが、保存されてない変数は破棄されます。

ところが、ユーザー目線で「復帰後に元の状態を期待する」ような場合も多々あります。

ViewModel() において対策の実装 

みんな大好き ViewModel は、rotation 状態などの構成の変更に対しては柔軟に処理してくれるものの、Process Death に関しては対応してくれません。

そのため Process Death 後に復旧するためには、自分で savedStateHandle 等でバックアップをとっておく必要があります。

実装例は以下のようになります。

class MainViewModel(
    private val savedStateHandle: SavedStateHandle
): ViewModel() {

    var counter by mutableStateOf(savedStateHandle.get("counter") ?: 0)
        private set

    fun count() {
        counter++
        savedStateHandle.set("counter", counter)
    }
}

Links

おわりに

Android において気をつけるべきこと」みたいなものにも少しずつ詳しくなっていきたいです。