在Android Kotlin中创建类扩展AsyncTask而不泄漏上下文对象

我定义了一个基类扩展了AsyncTask并且有一些自定义的方法。 我想创建一些extend它的子类,并override一些方法。 但是通过这种方式,它的字段会泄漏Context对象。

 abstract class ParentTask(context: Context) : AsyncTask<Void, Int, String>() { ... override fun doInBackground(vararg params: Void): String? { ... } ... } 

请告诉我为什么,并告诉我如何在Android Kotlin中实现它? 如果有这样的例子,我非常感激。 p / s:我正在为此搜索,但无法理解。 为什么使用Singleton或其他设计模式

你不能避免这种警告,但你可以处理你的上下文是应用程序上下文,它不会泄漏:

  abstract class ParentTask(context: Context) : AsyncTask<Void, Int, String>() { private val context: Context init { this.context = context.applicationContext } override fun doInBackground(vararg voids: Void): String? { //... } }