ViewModel は onCleared() を自分が破棄されるときに実行します。
public abstract class ViewModel {
/**
* This method will be called when this ViewModel is no longer used and will be destroyed.
* It is useful when ViewModel observes some data and you need to clear this subscription to
* prevent a leak of this ViewModel.
*/
@SuppressWarnings("WeakerAccess")
protected void onCleared() {
}
👉 ViewModel の概要 | Android デベロッパー | Android Developers
ログを吐かせて、その瞬間を確認します。
初期化のタイミングと合わせて確認してみましょう。
@HiltViewModel
class HomeViewModel @Inject constructor() : ViewModel() {
// ...
init {
Timber.d("## ${javaClass.simpleName} initialized.")
}
override fun onCleared() {
Timber.d("## ${javaClass.simpleName} onCleared.")
}
}
...
21077-21077/com.example.app D/HomeViewModel: ## HomeViewModel initialized.
...
21077-21077/com.example.app D/HomeViewModel: ## HomeViewModel onCleared.
...
なんでいまさらこんなことを!
👉 【Jetpack Compose】ViewModel を捨てて Repository を Composable に直結する
👉 Compose を既存のアプリ アーキテクチャと統合する | Jetpack Compose | Android Developers