此AsyncTask类应该是静态的,否则可能会发生泄漏

时间:2017-11-17 11:26:35

标签: android

我在方法中创建了asynctask。但它显示了一个警告。

  

此AsyncTask类应该是静态的,否则可能会发生泄漏(匿名)   android.os.AsyncTask)less ..静态字段会泄漏上下文。   非静态内部类具有对其外部的隐式引用   类。如果那个外部类是例如片段或活动,那么   这个引用意味着长时间运行的处理程序/加载器/任务将   持有对阻止它获取的活动的引用   垃圾收集。同样,对活动的直接字段引用   来自这些运​​行时间较长的实例的碎片可能会导致泄漏。   ViewModel类永远不应该指向Views或非应用程序   上下文。

如何避免此警告?

1 个答案:

答案 0 :(得分:0)

此警告试图说明的是,您可以在手机内存中泄露您的活动/片段。

如果您创建使用活动上下文的AsyncTask,或者AsyncTask是活动/片段的子类,则将活动/片段保留在内存中。当您旋转或更改periode中的活动时,AsyncTask正在运行。将旧活动实例保留在内存中并泄漏活动/片段。