在Android中,AsyncTask
是一個用于執(zhí)行后臺任務并在UI線程中更新UI的輕量級類
onPreExecute()
:在后臺任務開始執(zhí)行之前調(diào)用。這個方法在UI線程中運行,因此可以在這里進行UI操作,例如顯示一個進度條。
doInBackground(Params... params)
:在這個方法中執(zhí)行后臺任務。這個方法在一個單獨的線程中運行,因此不能在這里進行UI操作。根據(jù)需要,可以通過調(diào)用publishProgress(Progress... values)
方法來更新UI。
onProgressUpdate(Progress... values)
:當后臺任務調(diào)用publishProgress(Progress... values)
方法時,這個方法會被調(diào)用。這個方法在UI線程中運行,因此可以在這里更新UI,例如更新進度條的值。
onPostExecute(Result result)
:在后臺任務完成后調(diào)用。這個方法在UI線程中運行,因此可以在這里進行UI操作,例如更新UI組件或隱藏進度條。
onCancelled()
:當后臺任務被取消時調(diào)用。這個方法在UI線程中運行,因此可以在這里進行UI操作,例如更新UI組件或隱藏進度條。
onCancelled(Result result)
:當后臺任務被取消且返回結(jié)果時調(diào)用。這個方法在API 11及更高版本中引入,它在UI線程中運行,因此可以在這里進行UI操作,例如更新UI組件或隱藏進度條。
注意:從Android 11(API 29)開始,AsyncTask
已被標記為過時(deprecated),建議使用其他技術(shù),如ExecutorService
、Handler
、ViewModel
和LiveData
等,來實現(xiàn)后臺任務和UI更新。