AsynckTask幾點需要注意的幾個地方

2021-07-02 04:45:30 字數 1462 閱讀 2961

問題一:asynctask是多執行緒麼? 是的

問題二:asynctask與handler相比,誰更輕量級?

通過原始碼可以發現asynctask實際上就是乙個執行緒池,而網上的說法是asynctask比handler更輕量級,顯然這是不準確的說法,只能這樣說,ansytask在**上比handler要輕量級別,而實際上要比handler更消耗資源,因為ansytask底層封裝了乙個執行緒池,而handler僅僅是傳送了乙個訊息佇列,連線程池都沒有開!!!

但是。如果非同步任務的資料特別龐大,asynctask優勢就體現出來了

對asynctask的方法進行一些淺顯的解釋

必選方法:

1.doinbackground(params....)後台執行,耗時操作的都可以放在這裡  (此方法在子執行緒中執行)

值得注意的地方,這裡不能直接操作ui,此方法在後台執行緒執行,完成任務的工作,需要一段時間執行耗時操作,在執行的過程中可以呼叫   public progress(progress...)來更新任務的進度

2.onpostexecute(result  )   :(此方法在主線程 中執行)相當與handle處理ui的方式,在這裡可以使用doinbackground得到的結果來處理操作ui ,任務執行的結果作為此方法的引數返回

可選方法:

1,onprogressupdate(progress…) 可以使用進度條增加使用者體驗度。此方法在主線程執行,使用者顯示任務執行的進度。

2,onpreexecute() 這裡是最新使用者呼叫excute時的介面,當任務執行之前開始呼叫此方法,可以在這裡顯示進度對話方塊。

3,oncancelled() 使用者呼叫取消時,要做的操作。

asysctask定義了三種泛型型別params,progress和result.1,params啟動任務執行的輸入引數,比如http請求的url2,progress後台任務執行的百分比3,result後台執行任務最終返回的結果,比如string,比如我需要得到的list。

使用asynctask類,遵守的準則:

1,task的例項必須在ui thread中建立。

2,execute方法必須在ui thread中呼叫。

3,不要手動的呼叫onpfreexecute(),onpostexecute(result)doinbackground(params…),onprogressupdate(progress…)這幾個方法。

4,該task只能被執行一次,否則多次呼叫時將會出現異常。

asynctask的整個呼叫過程都是從execute方法開始的,一旦在主線程中呼叫execute方法,就可以通過onpreexecute方法,這是乙個預處理方法,比如可以在這裡開始乙個進度框,同樣也可以通過onprogressupdate方法給使用者乙個進度條的顯示,增加使用者體驗;最後通過onpostexecute方法,相當於handler處理ui的方式,在這裡可以使用在doinbackground得到的結果處理操作ui。此方法在主線程執行,任務執行的結果作為此方法的引數返回。

mysql記憶體使用以及優化中需要的幾點注意

1 從記憶體中讀取資料是微秒級別的。而從磁碟讀則是毫秒級別的。二者相差乙個數量級。所以想優化資料庫,第乙個要做到的就是優化io。2 key buffer size global 設定的記憶體區域大小快取了myisam表的索引。由於myisam只快取索引在記憶體中,並不快取資料在記憶體,所以如果記憶體...

spark stream 讀取靜態檔案幾點注意

spark streaming在讀取hdfs或者本地目錄下的靜態檔案時需要注意的幾點 一 讀取路徑為讀取檔案所在的上一級資料夾,和所讀取檔案統計目錄下的資料夾中的內容不會被讀取 path路徑只能寫到資料夾,否則報空指標錯誤,但程式不會停止 二 讀取檔案資料時,把要處理的資料檔案put或者mv到指定的...

支援向量機的幾點註記

1 劃分超平面到其異類的支援向量的距離是相等的。所以,對二分類問題而言,它對兩種分類類別的泛化能力是一致的。如果某一類資料的雜訊小,可以適當的降劃分超平面到該類資料支撐向量的距離,降低其魯棒性 容忍誤差範圍 反之亦然。2 函式間隔可以等倍地增加 減少,因此,取 w x b 1 足以表示 距離劃分超平...