android AsyncTask

AsyncTask允許你在后臺線程上運行任務(wù),同時將結(jié)果發(fā)到UI線程

UI線程有一個消息隊列和允許你發(fā)送和處理來自其他線程的可運行對象和消息的處理程序

AsyncTask用了一個相當(dāng)簡單的接口來封裝這個行為。

AsyncTask是一個泛型類
他有三個參數(shù)

  • Params 執(zhí)行時發(fā)送給任務(wù)的參數(shù)類型
  • Progress 發(fā)布的使用后臺計算來更新進度的類型
  • Result 后臺計算結(jié)果類型
    這三個參數(shù)分別對應(yīng)了AsyncTask的三個函數(shù)
  • doInBackground
  • onProgressUpdate
  • onPostExcute
  • onPreExcute

整個流程是:
首先調(diào)用Execute并將參數(shù)設(shè)置為后臺任務(wù),然后AsyncTask會運行幾個步驟
首先它在UI線程上調(diào)用onPreExecute,這樣你可以在背景任務(wù)開始前初始化你想在UI線程中啟動的任何東西,然后它在另一個線程上調(diào)用doInBackground,你的長時間運行任務(wù)將在此運行。這是唯一必須覆蓋才能使用該類的方法。并且它使用你傳遞給Execute函數(shù)的參數(shù)調(diào)用。如果你想要長時間任務(wù)的進度來更新一些UI,則使用進度參數(shù)調(diào)用publishProgress,這會使你的進度參數(shù)在UI線程上調(diào)用onProgressUpdate,你可以從doInBackground多次調(diào)用publishProgress,最終當(dāng)doInBackGround線程上運行的任務(wù)完成時,你返回結(jié)果,這會使用返回的結(jié)果在UI線程上調(diào)用onPostExecute函數(shù)

AsyncTask是在Android上的線程之間進行線程和消息傳遞的有用抽象類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容