SakurajimaMaii / Android-Vast-Extension

Easy Quick Android Utils for you to faster project development.
https://ave.entropy2020.cn
Apache License 2.0
64 stars 6 forks source link

SpNormal和SpEncrypted的不合理使用导致的问题 #146

Closed SakurajimaMaii closed 4 months ago

SakurajimaMaii commented 4 months ago

以下为示例代码:

object Sp1 : ISharedPreferencesOwner {

    override val name: String = "Sp1"
    override val kv by lazy {
        SpNormal.getInstance(name).getSharedPreferences()
    }

    // declare variables
    var id by string("")

}

object Sp2 : ISharedPreferencesOwner {

    override val name: String = "Sp2"
    override val kv by lazy {
        SpNormal.getInstance(name).getSharedPreferences()
    }

    // declare variables
    var id by string("")

}

这其实会导致 Sp1Sp2 获取的 kv 对象是同一个,进而如果有以下使用:

Sp1.id = "12345678910"
mLogger.d(Sp2.id)

Sp2.id 获取的值和 Sp1.id 一样,为了避免这种问题,应该允许用户创建单独的 SpNormalSpEncrypted 实例。