Android使用AsyncTask,urlConnection和InputStreamReader解析网站需要太长时间

时间:2017-04-28 13:23:43

标签: java android android-asynctask

我正在尝试使用AsyncTask,urlConnection和InputStreamReader解析以下页面

public class DownloadTask extends AsyncTask<String, Void, String> {

    URL url;
    URLConnection urlConnection;
    String result = null;
    @Override
    protected String doInBackground(String... urls) {

        try {

            url = new URL(urls[0]);

            urlConnection = (URLConnection) url.openConnection();

            InputStream in = urlConnection.getInputStream();

            InputStreamReader reader = new InputStreamReader(in);

            int data = reader.read();

            while (data != -1) {
                char current = (char) data;

                result += current;
                data = reader.read();
            }
            return result;

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


        return null;
    }
}

我正是以这种方式使用它:

        DownloadTask downloadTask = new DownloadTask();

    String data = null;
    try {

        data = downloadTask.execute("http://www.imdb.com/movies-in-theaters/").get();

    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

问题是完成DownloadTask需要3分钟以上。最后,它在仿真器上运行,但不在真实设备中。

我知道这不是一个好方法(解析网页)来做这样的事情,但我是出于教育原因这样做的。

有关如何加快程序的建议吗?

谢谢!

0 个答案:

没有答案