小编Ped*_*MVU的帖子

在 Android (Kotlin) 中处理单例清理的推荐方法是什么?

当我通过后退键关闭并重新输入时,我的 Android 应用程序中遇到了一些奇怪的问题,并发现它们的发生是因为我从未重新初始化过 2 个 Singleton 类中的变量(如果手动终止应用程序,则不会发生该问题)来自任务管理器)。

即使我在主活动 onBackPressed 上显式调用 finish 并且我可以看到 onDestroy 被调用后,单例仍然在内存中。

我决定在销毁我的 Activity 之前手动清理这些单例,问题是使用 Kotlin 我需要将它们的所有成员变量设为可为空(?),并且记住为每个变量分配 null 会很麻烦,所以现在我选择像这样处理 Singleton 的实例化,并在清理时将整个实例设置为 null:

class SingletonName {

    companion object {
        private var _instance: SingletonName ? = null
        private var instance: SingletonName ?
            get() {
                if (_instance == null) {
                    _instance = SingletonName ()
                }
                return _instance
            }
            set(value) {
                _instance = value
            }

        @JvmStatic fun get(): SingletonName {
            return instance!! //avoid having to deal with nullable value in client code …
Run Code Online (Sandbox Code Playgroud)

singleton android kotlin

5
推荐指数
1
解决办法
3359
查看次数

标签 统计

android ×1

kotlin ×1

singleton ×1