在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? { //... } }