[英]How to do AsyncTask inside AsyncTask in Android
我想在另一个AsyncTask中启动一个AsyncTask。 我试图通过在第一个AsyncTask的'onPostExecute'中启动第二个AsyncTask来做到这一点。 结果是第二个AsyncTask在第一个完成后启动。 我该如何解决?
谢谢
这是代码
private class Parse extends AsyncTask<Void, Void, Void>{
Document doc = null;
Element son = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
try {
doc = Jsoup.connect("MY_URL").get();
son= doc.body();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
for(CONDITION){
//MY_CODE
new DownloadImageTask().execute();
}
}
}
这是第二个AsyncTask
private class DownloadImageTask extends AsyncTask<String, Void, String> {
Bitmap bitmap;
ImageView image = new ImageView(Events.this);
@Override
protected void onPreExecute() {
};
protected String doInBackground(String... urls) {
try {
URL url = new URL("MY_URL");
bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
首先,请参阅官方文档以对AsyncTask有所了解: http : //developer.android.com/reference/android/os/AsyncTask.html
后台任务完成后,onPostExecute在主线程中运行。 此方法是通过这种方式设计的,用于与UI线程通讯以处理执行。
如果要使用后台代码运行第二个AsyncTask,或者要在它刚启动后运行它,则必须在doInBackground方法上执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.