首页 文章

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

提问于
浏览
2

这个问题在这里已有答案:

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

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

我该如何避免这种警告?

1 回答

  • 0

    这个警告试图说的是,你可以泄漏手机内存中的活动/片段 .

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

相关问题