【问题标题】:Is onCleared guarranteed to be called on a ViewModel in android?是否保证在 Android 中的 ViewModel 上调用 onCleared?
【发布时间】:2021-03-21 14:55:57
【问题描述】:

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

【问题讨论】:

  • 您通常应该尽快(或在合理的期限内)保存您想要保留的任何数据。如果用户强制停止应用程序,则不会保证调用回调。
  • @Pawel 我是否应该担心使用许多查询增量更新数据库的效率低下,而不是在视图超出范围之前进行批量插入?

标签: android viewmodel android-lifecycle android-viewmodel


【解决方案1】:

有没有可能不调用 onCleared 的情况?

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

  • 未处理的异常
  • 用户在“设置”应用中点击您应用屏幕上的“强制停止”
  • 系统在后台终止您的进程的某些情况(具体而言,系统 RAM 的需求是紧急的,例如处理来电,而您的应用程序的进程“抽空了”以被终止)

所以,通常会调用onCleared(),但不能保证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2019-07-15
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多