我定义了一个基类extends 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或其他设计模式
答案 0 :(得分:3)
你不能以这种方式避免这种警告,但你可以处理你的上下文是应用程序上下文并且它不会泄漏:
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? {
//...
}
}