在Android ViewModel中使用AsyncTask是否可以?

时间:2017-09-26 10:15:10

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

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

1 个答案:

答案 0 :(得分:0)

与最新的AndroidStudio告诉您的相反,只要您正确处理它,您就可以安全地在任何地方使用AsyncTask。这意味着如果你从一个活动或片段中激活它,你应该在活动/片段破坏时取消你的AsyncTask。他们警告它的原因是因为AsyncTask经常引用该活动。如果AsyncTask永远占用并且活动销毁,则AsyncTask仍在运行并持有对Activity的引用。这个硬引用使Activity不被垃圾收集,一旦完成被破坏的Activity,你仍然可以获得任何AsyncTask回调。但这可以通过简化生命周期来轻松避免:调用AsyncTask.cancel(true)。在建筑方面,由你来决定。

TLDR;如果不再需要,请务必取消您的asynctask。