gpt4 book ai didi

android - 写入共享首选项太慢?

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:47 24 4
gpt4 key购买 nike

我已经创建了一个服务,一旦用户将它放在主屏幕上,它就会写一些关于小部件的信息(信息是从混淆 Activity 中获取的)。我还记下了用户设置的小部件的数量。

一旦用户删除小部件,我就会在共享首选项中删除该信息。

我的经验是,如果用户放置例如 2 个小部件,然后删除一个,然后再放置一个,快速执行所有这些操作,共享首选项文件中的值会不一致。有时它工作正常,但大多数时候我都被错误的值(value)观困住了。

我正在使用 apply(),我尝试过提交,但同样的事情发生了。

我存储在共享首选项中的值对于系统的运行至关重要,没有它,小部件将毫无用处,因为它们由基于首选项中写入的用户配置的互联网信息备份。

是改用数据库解决方案更可靠,还是改用任何其他可行的解决方案来解决这种“竞争条件”? (也许强制我自己的同步机制,但据我从文档中了解到, apply() 已经同步,读/写应该首先转到 RAM,这应该使它更快,我不应该遇到任何问题,比如这是因为用户无法实际管理删除一个小部件并放置一个新的小部件,然后 2-3 秒顶部!)

最佳答案

尝试使用 synchronized 关键字来处理 SharedPreferences 本身。例如,这是在 Android 应用程序的 SharedPreferences 中设置应用程序字符串时可以使用的方法:

public synchronized static void setAppString(Context context, String pref,
String val) {
SharedPreferences sp = context.getSharedPreferences(
APP_PREFS_UNIQUE_ID, Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString(pref, val);
editor.commit();
}

对于少数/简单的键值对,您可能不需要数据库范例的开销。

关于android - 写入共享首选项太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212508/

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