我有一个解析一些大JSON文件的应用程序。
解析是在自己拥有最低优先级的线程中完成的。然而,当我解析UI变得几乎完全没有反应时。
我正在使用Gson进行解析,我知道杰克逊可能会给我更好的结果。但是 - 当我在另一个线程中工作时,我仍然不明白为什么UI会变得迟钝。
也许我的内存不足?我不确定 - 我有没有办法看到它?
欢迎任何建议。
编辑:
@Override
public void onResponse(JSONArray response) {
final JSONArray finalResponse = response;
new Thread(new Runnable() {
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
feedParser.feedParser(finalResponse);
}
}).start();
}
在feedParser(finalResponse)中,99%的时间用于解析响应,如下所示:
SubscriptionWrapper[] subscriptionWrappers = gson.fromJson(
jsonArray.toString(), SubscriptionWrapper[].class);
EDIT2:改写之后使用AsynvTask代替。它表现得稍好但仍然非常迟钝。
private static class VolleyResultParser extends AsyncTask<JSONArray, Void, Void> {
FeedParserWrapper feedParser = null;
public VolleyResultParser(FeedParserWrapper feedParser) {
this.feedParser = feedParser;
}
protected Void doInBackground(JSONArray... response) {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
feedParser.feedParser(response[0]);
return null;
}
}