为什么我的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);
}
}
答案 0 :(得分:3)
onPostExecute
在UI线程上运行。避免在这里做太多工作。在doInBackground
中执行繁重的工作,然后在onPostExecute
中更新UI(或您需要做的任何事情)。