首页 > 解决方案 > 在 Kotlin 中初始化 SharedPreference 的正确方法

问题描述

我对 Kotlin 很陌生。以前,我曾经在活动中声明一个 SharedPreference,如下所示:

class MainActivity extends AppCompatActivity {
    SharedPreferences main;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        main = getSharedPreferences("main", MODE_PRIVATE);
    }
}

这使我可以在main整个课程中使用该实例。我想实现类似的功能。我目前lateinit var这样使用:


class MainActivityKotlin : AppCompatActivity() {
    lateinit var main : SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        main = getSharedPreferences("main", Context.MODE_PRIVATE)
    }
}

但我不确定这是否是正确的做法。这也是一个var. 据我了解,val通常建议在实例不会更改的情况下使用 a (就像在这种情况下,main一旦初始化就不会更改)。那么这种方法正确吗?

标签: androidkotlinsharedpreferences

解决方案


使用lateinit完全没问题。毕竟,它是为此目的而存在的。

不过,您可以使用一个稍微干净的解决方案:lazy-init:

val main by lazy { getSharedPreferences("main", Context.MODE_PRIVATE) }

getSharedPreferences()这仅在首次引用时调用main,然后存储该实例。它类似于 Java 中的处理方式,但您不需要拆分行。


推荐阅读