0

我的活動或活動中的片段使用異步任務來完成CPU密集型工作。我想知道在異步任務的內部可以安全地使用宿主活動或片段。這是安全的在AsyncTask中使用宿主片段/活動嗎?

我猜onPostExecute應該沒問題,因爲異步任務旨在幫助UI線程,並且我看到更新onPostExecute中UI的示例。

但是在doInBackground中這樣做也是安全的嗎?在doInBackground中可能會破壞片段或活動嗎?

+1

更多信息,你爲什麼不上的AsyncTask檢查文檔第一?\ –

+0

在developer.android.com/reference/android/os/AsyncTask.html,它只是說,一個異步任務運行狀一個後臺任務。就其語義而言,onPostExecute在最後一步仍然可用於更新UI時被調用。因此,這意味着在異步任務的整個過程中,主機UI仍然可用。所以,doInBackground應該是安全的。如果用戶在執行期間殺死前臺用戶界面,會發生什麼情況?運行時確保在異步任務完成之前不會發生這種情況嗎?謝謝, –

回答

1

您的doInBackground()可以調用publishProgress()將進度更新發送到UI線程。然後,您可以重寫onProgressUpdate()並從該方法內部更新UI。

是的,在AsyncTask運行時,您的碎片和活動可能會被破壞。在從AsyncTask更新UI之前,您必須檢查。

有在http://developer.android.com/reference/android/os/AsyncTask.html

相關問題