2015-12-09 20 views
0

在我的AsyncTask'A'的onPreExecute方法中,我想檢查是否需要先執行另一個AsyncTask'B'。如果我這樣做,我想在A的doInBackground之前運行B.Android - OnPreExecute檢查是否需要先執行另一個AsyncTask

我可以這樣做嗎?有沒有更好的方法來實現這個邏輯?

編輯:讓我展開我的問題。如果我有幾個AsyncTasks A,C和D,並且我想檢查是否需要在這些任務中執行B,那我該怎麼做?從本質上講,我想擴展AsyncTask的功能並從中繼承,但對於AsyncTask中使用的泛型類型會變得棘手。

+0

爲什麼不在調用異步任務A的執行方法之前先檢查是否需要運行B? – jomartigcal

+0

在我的很多異步任務中,我需要做一個檢查,所以我想我想擴展Async任務的功能並檢查它。我不想將支票添加到很多地方 – ajohnston777

回答

0

AsyncTask是獨立的。一旦你運行它,你不能得到它。 除非... 您可以創建一個列表(或地圖)來管理這些任務。

例如,

Class AsyncManager { 
    Map manager = mManager; 

    void putAsyTask(AsyncTask at) { 
     mManager.put(key,at);//you should decide the key 
    } 
    void checkExisted(Object key) { 
    //check key is in mManager 
    } 
} 

和onPreExecute,您可以檢查任務是否在地圖上。

0

在該方法doInBackground任務運行同步,那麼你可以做驗證在doInBackground方法:

doInBackground(...){ 

    if(needExecuteTaskB){ 
    //Task B... 
    } 

    //Task A... 

    return; 
} 

祝你好運!

+0

讓我擴展我的問題。如果我想在我的幾個AsyncTasks中實現這個檢查,我想我想擴展AsyncTask,重寫doInBackground方法並添加我的功能,並在我的具體AsyncTask中調用super.doInBackground。但是對於我使用的很多類而言,泛型類型是不同的,這很棘手。我怎麼解決這個問題? – ajohnston777

相關問題