如果我去一個不同的Activity,這個AsyncTask的創建會繼續執行嗎?或者他們會停止工作並將任務完成一半?如果是這樣,當他們回到這個活動時,他們會繼續嗎?
是的,它會繼續運行。這可能是一把雙刃劍,因爲它通常會保留Activity實例,導致它超出了其回調的範圍,這並不理想。如果您正在運行的任務與「活動」本身沒有相同的生命週期需求,則最好放置到「服務」中。
爲了啓動運行AsyncTask的活動之一,我需要一個AsyncTask完全執行。我如何設置這個約束?你能告訴我一些這樣的示例代碼嗎?
有太多的方法可以做到這一點,很多取決於您的應用程序的體系結構,以提供特定的示例代碼......但這裏有一些更高層次的想法。由於AsyncTask在任務執行完成時在主線程(onPostExecute
)上提供了一個簡單的回調方法,因此您可以在該點設置一個標誌。或者,也許只需檢查AsyncTask從活動啓動的任何代碼中檢索的任何數據的存在。同樣,服務將爲此提供良好的環境,因爲在前進之前,多個活動可以連接到服務並檢查任務狀態。
根據您的應用程序,另一種選擇是將任務的結果轉儲到ContentProvider中。 ContentProviders包含一個很好的界面,可以在不訴諸全局廣播意圖的情況下通知觀察者所做的更改。
HTH