什么可能导致 SharedPreferences 不更新?

What could be causing SharedPreferences do not update?

我的应用包括玩简单的游戏并赚取一些积分,然后将这些积分提取到外部帐户。我将这些点保存在 SharedPreferences 中以避免对服务器的多次请求(当用户想要退出时我仍然会验证它们,但这与我的问题无关)。

现在,代码是这样的:

用户活动

private fun userClickedToWithdraw() {
    startActivityForResult(Intent(this, WithdrawActivity::class.java), RequestCode.RC_WITHDRAW)
}

private fun transactionSuccessfully() {
    //set the user points to zero in the SharedPreferences
    //and updates the UI accordingly
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == RequestCode.RC_WITHDRAW && resultCode == RESULT_OK) transactionSuccessfully()
}

WithdrawActivity

//handles the transaction and then call finishTransaction

private fun finishTransaction() {
    setResult(RESULT_OK)
    onBackPressed()
}

用户转移他的积分,然后调用finishTransaction函数设置结果为OK并完成activity。父 activity 处理 onActivityResult,如果结果正常,它会更新 SharedPreferences 和 UI.

这在我测试的所有设备上都能完美运行,但出于某种原因,我的一些用户有不同的结果。当他们成功传输时,SharedPreferences 和 UI 没有正确更新。

我无法复制此行为,因此我可以修复它。所以我希望有类似问题的人可以带我到这里。我在想也许 resultCode 不是 RESULT_OKtransactionSuccessfully 不是因此调用,但正如我所说,我无法复制它。

有没有人遇到过类似的问题可以帮助我?

这只是猜测,但如果可能的话请致电

super.onActivityResult(requestCode, resultCode, data)

最后。理想情况下,您首先要 运行 它,但我遇到了一些问题,它导致我的代码在 @override 中出现意外行为。