如何在kotlin的首选项中为计时器保存多个时间值



我正在使用kotlin开发计时器应用程序。我的要求是在首选项中保存多个时间值。为此,我制作了一个单独的偏好类。这是我完成的工作。

在PrefUtil类中

private const val ElAPSED_TIME_VALUE_ID = "com.code.kotlin.elapsed_time"
private var incrementedValue = 0
fun getElapsedTime(context: Context) : Long {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
return preferences.getLong(ElAPSED_TIME_VALUE_ID , 0)
}
fun setElapsedTime(elapsedTime: Long, context: Context) {
val editor = PreferenceManager.getDefaultSharedPreferences(context).edit()
editor.putLong(ElAPSED_TIME_VALUE_ID, elapsedTime)
editor.apply()
}

打开切换按钮

btnToggle.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
startTimer()
timerState = TimerState.Running
showStartTime()
startingTime = System.currentTimeMillis()
PrefUtils.setStartTimeValue(startingTime, this)
Toast.makeText(applicationContext, "Timer is Running", Toast.LENGTH_SHORT).show()
} else {
timer.cancel()
onTimerFinished()
elapsedTime()
PrefUtils.getElapsedTime(this)
Toast.makeText(applicationContext, "Timer is Stopped", Toast.LENGTH_SHORT).show()
}

用于在首选项中节省运行时间,然后从那里开始

private fun elapsedTime() {
val endingTime = System.currentTimeMillis()
val startTime = PrefUtils.getStartTimeValue(this)
elapsedTime = (-startTime + endingTime)
PrefUtils.setElapsedTime(elapsedTime, this)
}
private fun showElapsedTime() {
val minut = (PrefUtils.getElapsedTime(this) / 1000) / 60
val sec = (PrefUtils.getElapsedTime(this) / 1000) % 60
val elpTime: TextView = findViewById(R.id.elpTime)
elpTime.text = "Elapsed time: $minut : $sec "
}

按下暂停按钮时,我想显示保存的多个时间值

fabPause.setOnClickListener {
timer.cancel()
timerState = TimerState.Paused
updateButtons()
showElapsedTime()
}

现在的问题是,当我在获得一个首选项值后关闭应用程序时,时间值会自动从首选项中删除。在下一个会话中,它将保存为新的。。而我想在多个会话中保存和显示多个时间值。我该怎么办???需要您的帮助。。。。。。。!

如果要使用相同的ElAPSED_TIME_VALUE_ID键保存所有时间戳,可以使用例如SharedPreferences.Editor.putStringSet()。或者,您可以将它们连接到诸如"timestamp1:timestamp2"之类的内容,然后手动解析字符串。

最新更新