Android 为什么AsyncTask会阻塞UI线程?
为什么我的AsyncTask会阻止UI线程 在异步任务发生时,我的应用程序变得无响应 这在UI线程中调用:Android 为什么AsyncTask会阻塞UI线程?,android,android-asynctask,Android,Android Asynctask,为什么我的AsyncTask会阻止UI线程 在异步任务发生时,我的应用程序变得无响应 这在UI线程中调用: new AsyncFetch().execute(); 这是我的AsyncTask类: class AsyncFetch extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... args) { String data =
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);
}
}
类AsyncFetch扩展了AsyncTask{
@凌驾
受保护字符串doInBackground(无效…参数){
字符串数据=null;
试一试{
data=DataHandler.httpFetch(DataHandler.API\uURL);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回数据;
}
受保护的void onPostExecute(字符串数据){
DataHandler.AsyncFetchResult(数据);
}
}
onPostExecute
在UI线程上运行。避免在这里做太多的工作。在doInBackground
中完成繁重的工作,然后在UI线程上运行的onPostExecute
onPostExecute
中更新UI(或任何需要执行的操作)。避免在这里做太多的工作。在doInBackground
中完成繁重的工作,然后在UI线程上运行的onPostExecute
onPostExecute
中更新UI(或任何需要执行的操作)。避免在这里做太多的工作。在doInBackground
中完成繁重的工作,然后在UI线程上运行的onPostExecute
onPostExecute
中更新UI(或任何需要执行的操作)。避免在这里做太多的工作。在doInBackground
中完成繁重的工作,然后在onPostExecute
中更新UI(或任何您需要做的事情),这可能就是问题所在。DataHandler.AsyncFetchResult(data);。。。显示它的代码嗯,你是对的。让我做一些测试。该方法将数据保存到缓存并对其进行分析。它包含什么DataHandler.AsyncFetchResult方法?记住..onPostExecute在ui线程上运行。这就是为什么它会阻止您的ui。您不执行下面的调用“new AsyncFetch().execute().get();”这是阻塞。当心“.get()”。这可能就是问题所在。DataHandler.AsyncFetchResult(数据);。。。显示它的代码嗯,你是对的。让我做一些测试。该方法将数据保存到缓存并对其进行分析。它包含什么DataHandler.AsyncFetchResult方法?记住..onPostExecute在ui线程上运行。这就是为什么它会阻止您的ui。您不执行下面的调用“new AsyncFetch().execute().get();”这是阻塞。当心“.get()”。这可能就是问题所在。DataHandler.AsyncFetchResult(数据);。。。显示它的代码嗯,你是对的。让我做一些测试。该方法将数据保存到缓存并对其进行分析。它包含什么DataHandler.AsyncFetchResult方法?记住..onPostExecute在ui线程上运行。这就是为什么它会阻止您的ui。您不执行下面的调用“new AsyncFetch().execute().get();”这是阻塞。当心“.get()”。这可能就是问题所在。DataHandler.AsyncFetchResult(数据);。。。显示它的代码嗯,你是对的。让我做一些测试。该方法将数据保存到缓存并对其进行分析。它包含什么DataHandler.AsyncFetchResult方法?记住..onPostExecute在ui线程上运行。这就是为什么它会阻止您的ui。您不执行下面的调用“new AsyncFetch().execute().get();”这是阻塞。小心“.get()”。