コピペで使えるSharedPreferenceタイトル画像


SharedPreferenceをシングルトンで保持しておく事はよくあるのでメモ。
object SampleSingleton {
    private const val NAME = "SampleSingleton"
    private const val MODE = Context.MODE_PRIVATE
    private lateinit var preferences: SharedPreference

    private val IS_SAMPLE_VALUE = Pair("is_sample_value", false)


    fun init(context: Context) {
        preferences = context.getSharedPreferences(NAME, MODE)
    }

    private inline fun SharedPreference.edit(operation: (SharedPreference.Editor) -> Unit) {
        val editor = edit()
        operation(editor)
        editor.apply()
    }

    // values
    var isSampleValue: Boolean
        get() = preferences.getBoolean(IS_SAMPLE_VALUE.first, IS_SAMPLE_VALUE.second)
        set(value) = preferences.edit { it.putBoolean(IS_SAMPLE_VALUE.first, value) }
}
Application()を継承したクラスを作っておくと自動的にアプリが起動した時に呼ばれ、 アプリが終了するまでこのクラスは保持されるので、ここでシングルトンクラスを生成する。
class SampleApp : Application() {

    override fun onCreate() {
        super.onCreate()
        SampleSingleton.init(this)
    }

}
利用するときは以下の様になる。
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (!SampleSingleton.isSampleValue) {
            SampleSingleton.isSampleValue = true
        }
    }

}

0 コメント