問題一: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 足以表示 距離劃分超平...