kotlin 此字段泄漏上下文对象

pokxtpni  于 2023-01-05  发布在  Kotlin
关注(0)|答案(2)|浏览(195)

我的代码:

class HttpRequestTask(private val debtWsUrl : URI, debtorText : TextView) : 
      AsyncTask<Void, Void, Iterable<Debtor>?>() {
            val debtorText: TextView = debtorText
}

为什么带有TextView的行显示警告:
此字段泄漏上下文对象

我该如何预防这种情况?

m1m5dgzv

m1m5dgzv1#

使用WeakReference

val textRef: WeakReference<TextView> = WeakReference(debtorText)
tez616oj

tez616oj2#

您将视图分配给HttpRequestTask。由于视图需要上下文,因此您正在泄漏它。
试想一下,如果视图已经被破坏,但Http任务还没有完成,会发生什么。
这就是为什么你应该避免在方法内部给Context赋值,因为这可能会在视图被删除时返回一些东西。
删除debtorText并返回值,以便在视图中设置它。

相关问题