我有一个解析一些大 JSON 文件的应用程序。
解析是在它自己的具有最低优先级的线程中完成的。但是,在我解析 UI 时,它几乎完全没有响应。
我正在使用 Gson 进行解析,我知道 Jackson 可能会给我更好的结果。但是 - 我仍然不明白为什么当我在另一个线程中工作时 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;
}
}