在应用程序类内部创建单例会导致内存泄漏吗?

问题描述 投票:1回答:1

我有一个Authenticator类,需要使用context来完成对SharedPreferences的某些任务。我在自定义应用程序类中创建了该类的单例,因此无需每次都传递上下文来创建Authenticator的实例。这是正确的方法还是会导致内存泄漏或其他问题?

我的Application类:

class App : Application() {

    override fun onCreate() {
        super.onCreate()
        //Plant Timber for Logging in Debug Build
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }

        Authenticator.createInstance(this)

    }

    ...
    ....
}

在其他类上,我可以像这样访问单例:

Authenticator.INSTANCE
android kotlin singleton android-context
1个回答
2
投票

当具有生命周期的诸如ContextActivityApplication,...之类的对象存储为静态或静态对象时,您应注意在其生命周期结束时清除它们。如果这样做,则存储它们应该没有任何问题。只要在生命周期结束。

[为了进一步说明,Activity's生命周期以onDestroy结尾,您应该重写此功能并正确释放对其的访问。有关更多详细信息,您可以访问生命周期的android文档。对于诸如应用程序终止的情况,应用程序使用的所有内存都将被清除并且不会发生泄漏,因此您不必担心Application类中的访问,例如保存全局应用程序上下文。

© www.soinside.com 2019 - 2024. All rights reserved.