是否保证在 android 中的 ViewModel 上调用 onCleared?

Is onCleared guarranteed to be called on a ViewModel in android?

我能否安全地将代码放入视图模型的 onCleared 方法中来保存视图模型数据?如果应用程序因任何原因被终止或完成,或者是否存在可能无法调用 onCleared 的情况,是否可以保证将视图模型的数据放入持久存储中?

are there cases where onCleared may not be called?

至少,在 Activity 上的 onDestroy() 可能不会被调用。其中包括:

  • 未处理的异常
  • 用户在“设置”应用中点击您应用屏幕上的“强制停止”
  • 某些情况下系统会在后台终止您的进程(具体来说,当需要系统 RAM 时,例如处理来电,并且您的应用程序进程“抽签”被终止)

所以,通常会调用onCleared(),但不一定会调用