Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gson字符串中是否有要在SharedReferences中存档的最大长度?_Android_Json_Sharedpreferences - Fatal编程技术网

Android Gson字符串中是否有要在SharedReferences中存档的最大长度?

Android Gson字符串中是否有要在SharedReferences中存档的最大长度?,android,json,sharedpreferences,Android,Json,Sharedpreferences,在我的Android应用程序中,我在SharedReferences中将大量数据归档为json,json项构建如下{“codiceArticolo”:“0401100028053”,“data”:“mer 03/07/2019”,“qta”:“1”}json中可能有500多个类似的项 实际上,json是通过以下方法从ArrayList生成的 public void saveStorico(){ ArrayList<ItemModel> itemToRemove = new

在我的Android应用程序中,我在SharedReferences中将大量数据归档为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();
}
public void saveStorico(){
ArrayList itemToRemove=新建ArrayList();
ArrayList itemToAdd=新的ArrayList();
//各种控制
对于(ItemModel itemModels:ItemModel){
布尔存在=假;
对于(ItemModel itemModel2:itemStorico){
if(itemModels.getCodiceArticolo().contains(itemModel2.getCodiceArticolo())){
itemToRemove.add(itemModel2);
itemToAdd.add(itemModels);
存在=真实;
}
}
如果(!存在){
itemToAdd.add(itemModels);
}
}
itemStorico.removeAll(itemToRemove);
itemStorico.addAll(itemToAdd);
SharedPreferences SharedPreferences=getSharedPreferences(“STORICO_ORDINI”,MODE_PRIVATE);
SharedReferences.Editor=SharedReferences.edit();
Gson Gson=新的Gson();
字符串json=gson.toJson(itemStorico);
putString(“storico”,json);
editor.apply();
}
但是我在获取数据时遇到了一些问题,有些保存的项目似乎没有保存,我可以在SharedReferences内部保存为json的最大长度限制吗?

如果您想要保存的键值集合相对较小,那么应该使用SharedReferences API

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


正如我以前看到的,如果共享的偏好超过100KB,你需要考虑其他选择。如果超过1MB,可能会出现内存不足异常。

事实上,我知道我应该只存储一小部分键值,但我没有时间制作应用程序,我必须实现一个最快的解决方案来存储数据,无论如何,存储在共享prefs中的500个项占用的空间不超过64kb。。。