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