在 Android 中保存和检索数据

Saving and retrieving data in Android

private var highScore: Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this, R.layout.activity_game)
    loadData()
    playGame()
}
override fun onDestroy() {
    super.onDestroy()
    saveData()
}
private fun saveData(){
    val sharedPreferences = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
    val editor = sharedPreferences.edit()
    editor.apply{
        putInt("INTEGER_KEY", highScore)
    }.apply()
}
private fun loadData(){
    val sharedPreferences = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
    val savedInt = sharedPreferences.getInt("INTEGER_KEY", 0)
    highScore = savedInt
    binding.highScore.text = "Highscore: $savedInt"
}

我做了一个简单的游戏,我需要存储高分值并在应用程序重新启动时检索该值。我试图在给定的代码中使用 sharedPreferences。但是当我关闭应用程序并重新启动它时,高分数据丢失了。如何保存和检索值? PS: 在Android Studio 的模拟器中运行 应用程序时,高分值为saved/retrieved。但是当我 运行 我的 phone 上的应用程序时它不起作用。每次我重新启动它都会重置为 0。

您正在尝试保存,当应用程序被销毁时。这有时可能会起作用,当实际调用 onDestroy 时,但肯定不会发生。

Apply 正在将数据异步保存到磁盘,这不会发生,因为您在应用程序被销毁时试图这样做。您必须使用 commit 而不是 apply 来同步保存数据。

我建议将数据保存在应用程序的另一个位置而不是 onDestroy 中,因为它不会在每次应用程序 closed/killed.

时调用