【发布时间】:2014-04-15 05:32:54
【问题描述】:
我的问题是读取内部文件的性能。它真的很慢。我没有测量时间,但恕我直言,它真的很慢。读取这样的文件需要 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 数据字符串,以便每个活动都可以访问它们,而无需执行文件操作或数据库请求?
是否有某种应用程序缓存可以做到这一点?
编辑:我的另一个想法是使用 HttpResponseCache 并启动 asyncActivity 下载数据(在这种情况下是从缓存中)。但这不也是文件读取操作吗?
谢谢
【问题讨论】:
-
我找到了可以回答我问题的东西:stackoverflow.com/questions/2676280/… 但还有其他建议吗?
标签: android json performance file caching