【问题标题】:Is there a max lenght in Gson string to archive in SharedPreferences?Json 字符串中是否有要在 SharedPreferences 中存档的最大长度?
【发布时间】:2019-12-12 17:02:43
【问题描述】:

在我的 Android 应用程序中,我将大量数据存档为我的 SharedPreferences 中的 json,json 项目按以下方式构建 {"codiceArticolo":"0401100028053","data":"mer 03/07/2019","qta":"1"} 在 JSON 中可能有超过 500 个这样的项目。

其实json是通过下面的方法从ArrayList生成的

public void saveStorico(){

    ArrayList<ItemModel> itemToRemove = new ArrayList<>();
    ArrayList<ItemModel> itemToAdd = new ArrayList<>();
    // various controlls
    for(ItemModel itemModels : itemModel){
        boolean exist = false;
        for(ItemModel itemModel2 : itemStorico){
            if(itemModels.getCodiceArticolo().contains(itemModel2.getCodiceArticolo())) {
                itemToRemove.add(itemModel2);
                itemToAdd.add(itemModels);
                exist = true;
            }
        }
        if(!exist) {
            itemToAdd.add(itemModels);
        }
    }

    itemStorico.removeAll(itemToRemove);
    itemStorico.addAll(itemToAdd);

    SharedPreferences sharedPreferences = getSharedPreferences("STORICO_ORDINI", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    Gson gson = new Gson();
    String json = gson.toJson(itemStorico);
    editor.putString("storico", json);
    editor.apply();
}

但是我在获取数据时遇到了一些问题,似乎某些已保存的项目没有被保存,是否有一个最大长度限制,我可以在 sharedpreferences 中作为 json 保存?

【问题讨论】:

    标签: android json sharedpreferences


    【解决方案1】:

    如果您想要保存的键值集合相对较少,您应该使用 SharedPreferences API。

    对于像您这样的大量数据,SharedPreferences 不是一个好的选择。 您应该改用 SQL 数据库或 NoSQL 数据库。

    根据我之前看到的情况,如果共享首选项超过 100kb,您需要考虑替代方案。如果超过 ~1MB,则可能会出现内存不足的异常。

    【讨论】:

    • 实际上我知道我应该只存储少量的键值,但我没有时间创建应用程序,我必须实施一个最快的解决方案来存储该数据,无论如何存储了 500 个项目在共享首选项中不占用超过 64kb...
    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多