Android SharedReferences仅在应用程序重启后更新
你好 我读过几乎所有关于Stackoverflow上SharedReferences的帖子,但似乎没有一篇能回答我的问题 从JSON获取令牌代码后,我将其存储在SharedReferences中,当我判断值是否正确时,我使用以下代码将字符串值保存到SharedReferences:Android SharedReferences仅在应用程序重启后更新,android,sharedpreferences,Android,Sharedpreferences,你好 我读过几乎所有关于Stackoverflow上SharedReferences的帖子,但似乎没有一篇能回答我的问题 从JSON获取令牌代码后,我将其存储在SharedReferences中,当我判断值是否正确时,我使用以下代码将字符串值保存到SharedReferences: private String mypreference = "AppData.xml"; private String KeySave = "KeySave"; sharedpreferences = getSha
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();
String KeyCaptured = sharedpreferences.getString(KeySave, "");
String KeyCaptured = sharedpreferences.getString(KeySave, "");
当我查看XML时,我可以看到保存的值,问题是当我再次将SharedReference转换回字符串以与以下代码一起使用时:
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();
String KeyCaptured = sharedpreferences.getString(KeySave, "");
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());
}
})
除了上面我已经测试过的,没有很多其他的建议可以尝试,其他人有什么建议我可以尝试吗
谢谢,,
亲切问候我已经弄明白了,我需要在JSON和请求之间提供2秒的延迟。现在一切都在进行中请您的问题提供一个演示该问题的示例。请添加更多基于代码的信息,以便我们能够了解总体思路。最好找到解决方案。
当我查看XML时,我可以看到保存的值。如果“查看XLM”,我不清楚你会做什么。我将值存储在xml“private String mypreference=“AppData.xml”中,当我使用编辑器时,我可以看到保存在那里的更新JSON值。什么是KeySave?什么是Token?它们不能是字符串变量,因为java约定要求变量名以小写开头。