【问题标题】:Is it ok to use AsyncTask in Android ViewModel?在 Android ViewModel 中使用 AsyncTask 可以吗?
【发布时间】:2017-09-26 10:15:10
【问题描述】:

AsyncTask 对于​​数据库请求等后台作业是否安全,还是会出现内存泄漏等问题?在 ViewModel 中使用安全吗?

【问题讨论】:

    标签: android android-asynctask android-room android-architecture-components android-viewmodel


    【解决方案1】:

    与最新的 AndroidStudio 告诉您的相反,只要您正确处理 AsyncTask,您就可以安全地在任何地方使用它。这意味着如果你从一个活动或片段中触发它,你应该在活动/片段销毁时取消你的 AsyncTask。他们警告它的原因是因为 AsyncTask 通常有对活动的引用。如果 AsyncTask 一直占用并且 Activity 销毁,则 AsyncTask 仍在运行并持有对 Activity 的引用。这个硬引用可以防止 Activity 被垃圾收集,一旦它完成到被破坏的 Activity 中,您仍然会收到任何 AsyncTask 回调。但这可以很容易地通过使其具有生命周期意识来避免:调用 AsyncTask.cancel(true)。在架构上,这由您决定。

    TLDR;只需确保在不再需要时取消您的异步任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      相关资源
      最近更新 更多