![](/img/trans.png)
[英]Android SharedPreferences String Set - some items are removed after app restart
[英]Android Sharedpreferences Updating Only After App Restart
再会,
我已经阅读了 Stackoverflow 上关于 Sharedpreferences 的几乎所有帖子,但似乎没有一个回答我的问题。
从 JSON 获取令牌代码后,我将令牌代码存储在 Sharedpreferences 中,当我敬酒时,所有值都正确,然后使用以下代码将字符串值保存到 Sharedpreferences:
private String mypreference = "AppData.xml";
private String KeySave = "KeySave";
sharedpreferences = getSharedPreferences(mypreference, Context.MODE_PRIVATE);
String Token = json.optString("TokenFomJSON");
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(KeySave, Token);
editor.commit();
当我查看 XML 时,我可以看到保存的值,问题是当我再次将 Sharedpreferences 转换回 String 以与以下代码一起使用时:
String KeyCaptured = sharedpreferences.getString(KeySave, "");
然后它返回之前保存的密钥,而不是来自 JSON 的更新密钥。
当我重新启动应用程序时,会显示正确的密钥。
到目前为止我所做的测试。
将.commit() 更改为.apply()
我首先通过以下代码调用 JSON:
GetKey();
private void GetKey() {
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
Request.Method.POST, url, js,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Token", response.toString());
try {
JSONObject json = new JSONObject(response.toString());
String Token = json.optString("TokenFomJSON");
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(KeySave , Token);
editor.commit();
// Toast.makeText(LoginActivity.this, Token, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Token", "Error: " + error.getMessage());
}
})
}
然后我用下面的代码调用它:
String KeyCaptured = sharedpreferences.getString(KeySave, "");
除了我测试过的上述之外,没有太多其他建议可以尝试,还有其他人有我可以尝试的建议吗?
谢谢,亲切的问候
我已经想通了,我需要在 JSON 和请求之间延迟 2 秒。 现在都在工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.