2013-04-26 14 views
3

我有一個AsyncTask,它返回一個包含2個元素的地圖。我這樣做是這樣的:獲取AsyncTask的回報並使用它?

 Map<String, ArrayList<String>> result = new HashMap<String, ArrayList<String>>(); 
     result.put("usernames", usernames); 
     result.put("messages", messages); 

    return result; 

現在我把這個異步另一個動作:

new ReadChat().execute(response);

我怎樣才能從doInBackground()從異步任務(在這個其他的活動返回的數據)?

+0

實現'onPostExecute',並從這裏開始一個新的活動。 – 2013-04-26 14:42:55

+0

好吧,我發現我只是在活動中創建一個新的地圖,調用異步並執行.get(),它的工作原理,謝謝 – Phil 2013-04-26 14:45:53

+0

用正確的答案回答自己的問題或將其刪除。 – Timmetje 2013-04-26 14:46:26

回答

0

如何從 AsyncTask獲取其他活動中的返回數據?

起初我認爲你的問題不是很清楚。它取決於「你想要對這些數據做什麼」。的AsyncTask與三個指定的,我們可以說「主」方法:

  • onPreExecute() - 被稱爲任務開始
  • doInBackground()前 - 爲 「沉默」 做了一些工作在後臺
  • onPostExecute() - doInBackground後稱爲()完成

因此,如果您doInBackground()方法返回Map<String, ArrayList<String>>你可以在把它作爲參數EQ onPostExecute()使用它:

@Override 
public void onPostExecute(Map<String, ArrayList<String>> result) { 
    // do some stuff 
} 

在這裏你可以做任何你想要的結果,例如更新UI這些數據,堅持數據與SharedPreferencesSQLite,做一些下一個計算等。

0

您需要在某處保存ReadChat實例。然後,在ReadChat內設置值,等到它完成,然後再讀取這些值。