gpt4 book ai didi

android - 将 ArrayList 存储为 JSON SharedPreference 或 SQLite 数据库表?
转载 作者:行者123 更新时间:2023-11-30 04:07:03 25 4
gpt4 key购买 nike

场景:我正在从服务中的线程向 Web 服务发送用户位置(对象位置:纬度、经度和精度字段)。如果由于各种问题(比如没有网络)而失败,我需要存储它并在下次尝试发送。如果多次失败,则存储多个 Location 对象。

我有两个选择:

  1. 使用 SQLite 数据库和在每个线程上打开的 SQLiteOpenHelper,从表中检索记录,关闭。发送成功后,清空表内容。

  2. 使用 SharedPreferences,同时将位置对象存储为 ArrayList(如果有很多)并使用 GSON 解析为 JSON。需要时再次解析为 ArrayList。

我知道 SharedPreferences 没有大小限制,根据我的条件,我可能有 100 行(这被夸大了但可能)。我主要担心的是 SQlite 如此频繁地打开和关闭它,事情可能会变得困惑并最终强制关闭。 SharedPreferences 不会干扰任何东西,但我想我在保存/解析这么长的列表时可能会表现不佳。我知道 SharedPreferences 不是为此而设计的,但我想听听您的意见。

最佳答案

如果您担心 sqlite 在打开和关闭数据库时抛出异常,您可以将值单独放入 SharedPreference,然后可以使用

遍历 SharedPreferences 的所有值
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("map values",entry.getKey() + ":
"+ entry.getValue().toString());
}

关于android - 将 ArrayList<Object> 存储为 JSON SharedPreference 或 SQLite 数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431039/

25 4 0