我的问题是读取内部文件的性能。真的很慢。我没有量时间,但我觉得时间真的很慢。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下载数据(在本例中是从缓存)。但这不也是一个文件读取操作吗?
感谢
我最终使用了一个扩展的应用程序类,其中包含我的全局变量。这很快,而且我不必一直读文件。此外,我不必在片段构造函数中使用那么多参数。