在阅读文档时,我发现必须在UI线程上加载AsyncTask类。但我很惊讶AsyncTask也可以从工作线程执行。
所以问题是:
如果AsyncTask也可以从后台线程执行,为什么在文档中他们说的正好相反。
怎么可能在onPostExecute上有上下文。?
new Thread(new Runnable() {
@Override
public void run() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Toast.makeText(getBaseContext(), "in AsyncTask...", Toast.LENGTH_SHORT).show();
}
}.execute();
}
}).start();
答案 0 :(得分:0)
AsyncTask Android类允许我们将后台任务绑定到UI线程。因此,使用此类,您可以执行后台操作,然后将结果发布到更新UI组件的UI线程。
您可以简要了解AsyncTask的执行情况:http://codetheory.in/android-asynctask/
答案 1 :(得分:0)
主线程和工作线程有两个主题。 Asyntasck适用于工作线程.Mustly Asynctask用于后台Task.It适用于工作线程并在主线程上发布结果。
如果主线程阻塞5秒或更长时间,那么应用程序无响应(ANR)对话框就会出现,以避免使用Asynctask后台任务的这种情况