gpt4 book ai didi

android - 为什么 OnResume 会重置我的 SharedPreference 对象中的值?

转载 作者:行者123 更新时间:2023-11-29 18:35:59 25 4
gpt4 key购买 nike

当用户单击按钮时,它会将 sharedpreference 对象中的 bool 值切换为 true/false。当我稍后在 Activity 中访问该状态时,状态被保存并且工作正常。但是,当我单击 Android 的后退按钮暂停应用程序并再次恢复应用程序时,SharedPreference 对象切换为 true。尽管当我用调试器检查 onPause() 方法时它是 false。

基本上,我已经尝试在 Activity 的 onPause、onCreate 和 onResume 方法中检查 SharedPreference 对象的状态。我不确定为什么在 onCreate 方法期间该值会切换回其默认值 (true)。

override fun onPause() {
super.onPause()

val p = pauseButtonTracker.pauseButtonStateAtResume() // value is false


}



override fun onResume() {
super.onResume()
val q = pauseButtonTracker.pauseButtonStateAtResume() // value is switched to true

//...

//管理我正在谈论的共享首选项对象的对象

class PauseButtonTracker(context: Context) { 
private val PAUSE_BUTTON_TRACKER = "PAUSE_BUTTON_TRACKER"
private val WAS_AT_RESUME = "WAS_AT_RESUME"
private val pauseTracker = context.getSharedPreferences(PAUSE_BUTTON_TRACKER, 0)
private val pauseTrackerEditor = pauseTracker.edit()

fun pauseButtonStateAtResume(): Boolean{
return pauseTracker.getBoolean(WAS_AT_RESUME, true)
}

fun switchPauseButtonStateToPause(){
pauseTrackerEditor.putBoolean(WAS_AT_RESUME, false)
pauseTrackerEditor.apply()
}

fun switchPauseButtonStateToResume(){
pauseTrackerEditor.putBoolean(WAS_AT_RESUME, true)
pauseTrackerEditor.apply()
}


}

值包含在,

pauseButtonTracker.pauseButtonStateAtResume()  

在调用 onResume 时本应保持为 false,但由于某种原因它被切换为 true。

最佳答案

糟糕,解决方案是在

上安装一个调试器
fun switchPauseButtonStateToResume(){
pauseTrackerEditor.putBoolean(WAS_AT_RESUME, true)
pauseTrackerEditor.apply()
}

看看它是否因为某种原因被调用。

事实证明,它是从主 Activity 调用的,就在它切换到带有暂停/恢复按钮的 Activity 之前。因此,如果用户点击暂停,退出应用程序,然后再次恢复,它总是会切换回恢复状态。

关于android - 为什么 OnResume 会重置我的 SharedPreference 对象中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com