我的資產文件夾中存儲了大約1MB的JSON文件,每次運行時都需要在我的應用中加載。我發現內置的JSON解析器(org.json)非常緩慢地解析文件,但是一旦它被解析,我就可以非常快速地訪問和操作數據。從點擊應用程序到Activity1被啓動的那一刻,我已經計算出多達7或8秒的時間,但從Activity1到Activity2只需要幾個毫秒,這取決於從加載的數據處理的數據活動1。在Android上解析〜1 MB JSON很慢
我把文件讀入內存,並解析它使用:
String jsonString = readFileToMemory(myFilename)
JSONArray array = new JSONArray(jsonString);
其中readFileToMemory(字符串)看起來是這樣的:
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();
}
沒有人有我如何能加快任何建議最初加載和解析數據?我應該掩飾加載屏幕後面的整個過程嗎?
有微的優化可以使,像'data.ensureCapacity(stream.available())'並且使你的塊8K或64K等等,但真正的更好的是串行化數據或保存它到解析後的SQL表中,然後使用該表,除非檢測到JSON文件已更新。 –