gpt4 book ai didi

java - 无法在不同线程中访问 SharedPreference 的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:08 26 4
gpt4 key购买 nike

在我的应用程序中,登录后我将用户详细信息(如用户名、ID、电子邮件等)保存在 sharedPreference 文件中,以便我可以在我的应用程序中的任何位置访问这些信息,我是这样做的

public void put(String fileName, String key, String value)
{
SharedPreferences sharedPref = getContext().getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(key, value);
editor.commit();
}

现在我生成了一个不同的线程,它将独立运行(类似于 Sync),我正在像这样访问 sharedPreference,

mContext.getSharedPreferences(fileName, Context.MODE_PRIVATE);

但是这个特定首选项中的所有值都返回为 null,我做错了什么吗,

PS :- 如果我终止应用程序并再次生成相同的线程,我可以访问这些值(这很奇怪,但这种情况正在发生,即当用户第一次登录时,无法访问这些详细信息)

感觉像是与 SharedPreferences 的同步问题,有人可以帮忙吗?

最佳答案

我认为您选择了正确的方式。实际上访问共享首选项只是对存储在 /data/data/pkg_name/preferences 中的 XML 文件的 I/O 操作。因此,如果您想在 UI 以外的其他线程中访问它,这真的很有意义。

但是,您应该确保在对共享首选项进行每次操作后,您应该提交底层的更改。首先你应该提防differences between apply() and commit() .

因此,您应该首先提交您的更改,然后您可以通过另一个线程访问它。

关于java - 无法在不同线程中访问 SharedPreference 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com