将5个json文件内容保存到缓存:选择SharedPrefs而不是内部文件

时间:2014-04-15 05:32:55

标签: android json performance file caching

我的问题是读取内部文件的性能。这真的很慢。我没有测量时间,但恕我直言,它真的很慢。读取这样的文件需要2-3秒:

private static String readJsonFile(String type, Context context) {
    int ch;
    StringBuffer sb = new StringBuffer("");
    FileInputStream fis = null;
    try {
        fis = context.openFileInput(context.getResources().getString(R.string.class.getField("filename_" + type).getInt(null)));
        while ((ch = fis.read()) != -1) {
            sb.append((char)ch);
        }
    } catch (NotFoundException | IllegalAccessException | IllegalArgumentException | NoSuchFieldException | IOException e) {
        e.printStackTrace();
    }
    String jsonString = new String(sb);
    return jsonString;
}

数据在应用程序的初始屏幕中写入,它使用AsyncTask下载5个不同的json输入字符串。

我想知道将数据保存在共享首选项中以便访问所有活动中的数据会更快。所以我不需要进行文件访问操作。但是,SharedPrefs也不是文件访问操作,读取xml文件吗?

或者我应该调用所有需要通过引用函数参数访问全局可用json数据的函数吗?这个工作吗?

简而言之: 我需要一个关于如何在我的应用程序的生命周期中存储5个不同的JSON数据字符串的模式/模式,以便每个活动都可以访问它们,而无需执行文件操作或数据库请求?

是否有某种app-cache可以做到这一点?

编辑:我的另一个想法是使用HttpResponseCache并启动asyncActivity下载数据(在本例中是从缓存中)。但这还不是文件阅读操作吗?

由于

1 个答案:

答案 0 :(得分:0)

我最终使用了一个扩展的Application类,持有我的全局变量。这很快,我不必一直读取文件。此外,我不必在片段构造函数中使用尽可能多的参数。