为什么AsyncTask阻塞UI线程?

时间:2014-05-08 11:18:45

标签: android android-asynctask

为什么我的AsyncTask会阻止UI线程?

AsyncTask发生时我的应用程序没有响应。

这在UI线程中调用:

new AsyncFetch().execute();

这是我的AsyncTask类:

class AsyncFetch extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... args) {
        String data = null;
        try {
            data = DataHandler.httpFetch(DataHandler.API_URL);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return data;
    }

    protected void onPostExecute(String data) {
        DataHandler.AsyncFetchResult(data);
    }

}

1 个答案:

答案 0 :(得分:3)

onPostExecute在UI线程上运行。避免在这里做太多工作。在doInBackground中执行繁重的工作,然后在onPostExecute中更新UI(或您需要做的任何事情)。