0

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

0 に答える 0