簡體   English   中英

如何在Android中的AsyncTask中執行AsyncTask

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM