大きな 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;
}
}