我的资产文件夹中存储了一个大约 1MB 的 JSON 文件,每次运行时都需要将其加载到我的应用程序中。我发现内置的 JSON 解析器 (org.json) 解析文件的速度非常慢,但是一旦解析完成,我就可以非常快速地访问和操作数据。从我点击应用程序到启动 Activity1 的那一刻,我计算了多达 7 或 8 秒,但从 Activity1 到 Activity2 只需几毫秒,这取决于从加载的数据处理的数据活动1。
我正在将文件读入内存并使用以下方法解析它:
String jsonString = readFileToMemory(myFilename)
JSONArray array = new JSONArray(jsonString);
其中 readFileToMemory(String) 看起来像这样:
private String readFileToMemory(String filename) {
StringBuilder data = new StringBuilder();
BufferedReader reader = null;
try {
InputStream stream = myContext.getAssets().open(filename);
reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
int result = 0;
do
{
char[] chunk = new char[512];
result = reader.read(chunk);
data.append(chunk);
}
while(result != -1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return data.toString();
}
有人对我如何加快数据的初始加载和解析有任何建议吗?我应该掩盖加载屏幕背后的整个过程吗?