0

我想在另一个 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;
}
4

1 回答 1

1

首先,请参考官方文档以更好地了解 AsyncTask:http: //developer.android.com/reference/android/os/AsyncTask.html

onPostExecute 在后台任务完成后在主线程中运行。此方法被设计为用于与 UI 线程通信以处理执行。

如果您想使用后台代码运行第二个 AsyncTask,或者在它启动之后,您必须在 doInBackground 方法上执行此操作。

于 2013-10-03T21:33:08.343 回答