如何改善StringArray的存储和加载?

时间:2018-06-28 06:40:09

标签: android arrays json sharedpreferences

实际上,在我的应用程序中,我将所有不同的数据存储在String数组中之后,通过下载将其格式化的HTML页面代码并从页面中检索某些特定数据的方式来执行一些复杂的操作。

将数据存储在数组中后,我正在使用Json for Array项目将其保存在sharedPreferences中,但是我不确定这是否是最佳选择,我是否可以做其他任何操作来使其保存并加载数据更快?

PS:我不会将任何数据库用作Room或SQlite。

这是我用于保存和加载数据的代码:

private void saveDataTasti(){

    SharedPreferences sharedPreferences = getSharedPreferences("TASTI_SAVE", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    Gson gson = new Gson();
    String json = gson.toJson(items);
    editor.putString("tasti list", json);
    editor.apply();

}


private void loadDataTasti() {
    new ArrayList<Item>();
    SharedPreferences sharedPreferences = getSharedPreferences("TASTI_SAVE", MODE_PRIVATE);
    Gson gson = new Gson();
    String json = sharedPreferences.getString("tasti list", null);
    Type type = new TypeToken<ArrayList<Item>>() {
    }.getType();
    items = gson.fromJson(json, type);
}

1 个答案:

答案 0 :(得分:1)

“共享首选项”内部仅将内容存储为“文件”。因此,与数据库相比,从中检索数据将很慢。另外,存储的数据是一个json字符串,因此它在性能方面增加了额外的复杂性。使用SQlite / Room,是您的理想选择,如果进行搜索,则可以轻松获得样板。但是,由于您不想使用这些实用程序,因此,如果从服务器获取的数据不经常更改,则可以在其中实现视图级缓存。

View Caching