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

标签 android kotlin

我定义了一个基类扩展AsyncTask并有一些自定义方法。我想创建一些子类来扩展它,并覆盖一些方法。但这样一来,它的字段就会泄漏 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? {
            //...
        }
    }

关于android - 在 Android Kotlin 中创建类扩展 AsyncTask 而不泄漏上下文对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46030345/

相关文章:

android - android中的漫游检测

android - 如何强制 CMake 不在共享库文件名和 soname 中添加主要/次要版本?

android - selectableItemBackground 应用程序崩溃

android - Arcore fragment 在启动时崩溃

Gradle kotlin如何调用父级中定义的函数?

syntax - Kotlin,子类的二级构造函数

android - 在 Linux 平台上运行 Android 应用程序

java - 如何将带有缩写记录的sqlite数据库添加到android项目中

android - 如何声明在 kotlin 伴随对象中声明的 native cpp 方法?

list - 如何在 Kotlin 中过滤 ArrayList,以便我只有符合我的条件的元素?