1

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

4

1 回答 1

-1

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

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

于 2017-12-11T21:35:30.097 回答