在应用程序 class 中创建单例是否会导致内存泄漏?

Does creating singleton inside application class cause memory leak?

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

我的 Application class :

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)

    }

    ...
    ....
}

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

Authenticator.INSTANCE

ContextActivityApplication、...等具有生命周期的对象存储为静态或静态对象时,您应该注意将它们作为生命周期清除结束。如果这样做,存储它们应该没有任何问题。只需在 生命周期结束。

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