【发布时间】:2020-02-09 15:45:40
【问题描述】:
我将用户的个人资料图片 uri 存储在 SharedPreferences 中。当用户更新他们的个人资料图像时,它也应该在 SharedPreferences 中得到更新。但是,当我尝试检索新的图像 uri 时,我总是得到旧的 uri,但如果我关闭设备或强制应用程序停止,则值会更新。我注意到这个问题发生在 android 6.0 和 8.0 上,尝试过 kitkat 并且工作正常。我在互联网上找到了一些建议使用 apply() 而不是 commit() 的解决方案,但都没有奏效。
这是我用来保存图像 uri 的代码:
SharedPreferences login = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = login.edit();
editor.putString( USER_PROFILE_PIC, selectedImage.toString());
editor.apply();
这是我检索图像 uri 的方法:
SharedPreferences login = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = login.edit();
String profileImageURI = login.getString( USER_PROFILE_PIC, "" );
更新
值在我更新 SharedPreferences 的活动中正确返回。但是,在 syncAdapter 中,当我从 SharePreferences 中检索值时,它会返回旧值。
【问题讨论】:
-
查看 editor.commit() 返回 true 还是 false。
-
它返回了真实的@SuyashChavan
-
您可以使用 com.willowtreeapps.hyperion:hyperion-shared-preferences 库检查 SharedPreferences 中的值。看看它是否更新到所需的值
-
您是否尝试在从 sharedpreferences 检索 uri 后记录它的值?
-
是的,我做到了,它显示旧值。 @takieddine