2012-03-21 51 views
1

我有一個活動,需要進行兩個遠程服務器調用。首先是簡單的,當頁面加載時,我只是打電話來獲取一些數據並顯示它......沒問題。Android - 如何在一個Activity中創建兩個異步調用?

問題發生在第二次調用中,因爲一旦我調用sendFeedback,它會嘗試執行任務,但doInBackground()方法是針對原始調用編寫的,因此參數將不起作用,並且函數當從遠程呼叫返回數據時調用的呼叫對於兩個呼叫都不相同。

在我需要從一個活動進行兩個不同的遠程呼叫的情況下,通常會做什麼?

謝謝!

+2

爲什麼你不能創建一個全新的Async任務類? – dymmeh 2012-03-21 17:51:26

+0

它們是否都在同一時間運行? – sdfwer 2012-03-21 17:57:13

回答

3

正如dophh表明的,只需使用兩個不同的AsyncTask子類。

+0

@kabko謝謝,但我怎麼做兩個AsyncTask子類?我的意思是,如何在需要時稱呼一個班級,而不是另一個班級? :) 謝謝! – GeekedOut 2012-03-21 18:10:49

+0

我不確定混淆的地方。你是如何製作一個AsyncTask子類的?爲第二個做類似的事情。如果你發佈了一些代碼或者僞代碼來說明你現在擁有的更具體的東西,也許它會爲我們所有人清除一些東西。 – kabuko 2012-03-21 18:14:24

+0

@kabko什麼我不清楚是我是否應該有這兩個聲明:公共類DownloadWebPageTask擴展的AsyncTask <字符串,太虛,字符串> – GeekedOut 2012-03-21 18:19:28

2

我不能完全跟着你想要什麼,但我認爲你說你想在序列中的兩個異步調用與第二取決於第一。

如果我的理解是正確的,從第一個的onPostExecute()方法開始第二個AsyncTask

2

只需在需要它們的地方創建2個AsyncTask。

new AsyncTask<String, Void, Object>() { 
     @Override 
     protected Object doInBackground(String... params) { 
        // put task here 

     } 

     @Override 
     protected void onPostExecute(Object result) { 
      super.onPostExecute(result); 

     } 
    }; 
相關問題