【问题标题】:Is it a good idea to create a new SharedPreferences object everyday the app is used?每天使用应用程序创建一个新的 SharedPreferences 对象是个好主意吗?
【发布时间】:2019-01-06 08:18:38
【问题描述】:

我读过其他主题,它说多个共享偏好是一件好事 (Android - Is it bad practice to have multiple Shared Preferences?) ,但是不应该使用首选项存储大量数据。然而,“大量数据”是什么意思?应用程序运行的每一天,它都会创建一个以当前日期为键的新键值对...这是一个好主意还是应该切换到 SQLite?

class TimeAndMoneyForASpecificDay (val context: Context) {

    private fun obtainDate(): String{ 
        val df = SimpleDateFormat("MMM d, yyyy")
        return df.format(Date())
    }

    fun saveTimeWorkedAndMoneyEarned(timeWorked: Float, moneyEarned: Float) {

        val current = obtainDate() 

        val time = context.getSharedPreferences("time", 0) // ??
        val money = context.getSharedPreferences("money",0)

        val timeEditor = time.edit()
        val moneyEditor = money.edit()


        timeEditor.putFloat(current, timeWorked) 
        moneyEditor.putFloat(current, moneyEarned)

        timeEditor.apply()
        moneyEditor.apply()


    }
}

【问题讨论】:

  • 您是否总共只保留了一定天数,或者您希望有人在 4 年后仍然使用您的应用程序?这确实是一种设计选择。另外,当有人发出“清除缓存”请求时会发生什么?在这种情况下,SQLite DB 也会被删除。

标签: android sharedpreferences


【解决方案1】:

正如@Tigger 提到的,这是一种设计选择,但如果您认为用户可能会在几年内使用您的应用,那么删除旧信息并不是一个坏主意,因为共享首选项中的许多键会使阅读速度变慢/update 如果您选择使用共享首选项,请确保删除一些旧密钥。共享首选项是简单的 XM 文件,因此不用说很多键会使它们变慢。 您还可以查看我的仓库,它支持密钥的到期和参数(例如您的日期)EasyPrefs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2020-05-09
    • 2013-09-23
    • 2017-10-08
    • 2014-03-17
    相关资源
    最近更新 更多