android客戶端 AsyncTask的使用

2021-06-22 17:54:46 字數 1680 閱讀 7860

在開發android移動客戶端的時候往往要使用多執行緒來進行操作,我們通常會將耗時的操作放在單獨的執行緒執行,避免其占用主線程而給使用者帶來不好的使用者體驗。但是在子執行緒中無法去操作主線程(ui 執行緒),在子執行緒中操作ui執行緒會出現錯誤。因此android提供了乙個類handler來在子執行緒中來更新ui執行緒,用發訊息的機制更新ui介面,呈現給使用者。這樣就解決了子執行緒更新ui的問題。但是費時的任務操作總會啟動一些匿名的子執行緒,太多的子執行緒給系統帶來巨大的負擔,隨之帶來一些效能問題。因此android提供了乙個工具類asynctask,顧名思義非同步執行任務。

關於引數:

asynctask定義了三種泛型型別 params,progress和result。

關於方法:

一般的情況下:使用非同步任務需要覆蓋以下幾個常用的方法:其中doinbackground和

onpostexecute是必選。

* onpreexecute(), 該方法將在執行實際的後台操作前被ui 執行緒呼叫。可以在該方法中做一些準備工作,如在介面上顯示乙個進度條,或者一些控制項的例項化,這個方法可以不用實現。

* doinbackground(params...), 將在onpreexecute 方法執行後馬上執行,該方法執行在後台執行緒中。這裡將主要負責執行那些很耗時的後台處理工作。可以呼叫 publishprogress方法來更新實時的任務進度。該方法是抽象方法,子類必須實現。

* onprogressupdate(progress...),在publishprogress方法被呼叫後,ui 執行緒將呼叫這個方法從而在介面上展示任務的進展情況,例如通過乙個進度條進行展示。

* onpostexecute(result), 在doinbackground 執行完成後,onpostexecute 方法將被ui 執行緒呼叫,後台的計算結果將通過該方法傳遞到ui 執行緒,並且在介面上展示給使用者.

* oncancelled(),在使用者取消執行緒操作的時候呼叫。在主線程中呼叫oncancelled()的時候呼叫。

關於引數需要注意的是:doinbackground方法和onpostexecute的引數必須對應,這兩個引數在asynctask宣告的泛型引數列表中指定,第乙個為doinbackground接受的引數,第二個為顯示進度的引數,第三個為doinbackground返回和onpostexecute傳入的引數。下面通過乙個demo來說明如何使用android.os.asynctask類,通過進度條來顯示進行的進度,然後用textview來顯示進度值。

asynctask,是android提供的輕量級的非同步類,可以直接繼承asynctask,在類中實現非同步操作,提供介面反饋當前非同步執行的程度(可以通過介面實現ui進度更新),最後反饋執行的結果給ui主線程。優點:簡單,快捷,過程可控。

缺點就是在使用多個非同步操作和並需要進行ui變更時,就變得複雜起來.

在handler 非同步實現時,涉及到 handler, looper, message,thread四個物件,實現非同步的流程是主線程啟動thread(子執行緒)àthread(子執行緒)執行並生成message-àlooper獲取message並傳遞給handleràhandler逐個獲取looper中的message,並進行ui變更。優點:結構清晰,功能定義明確,對於多個後台任務時,簡單,清晰.缺點:在單個後台非同步處理時,顯得**過多,結構過於複雜(相對性)。

android 客戶端 Cookie處理

android 客戶端 cookie處理 cookie,有時也用其複數形式cookies,指某些 為了辨別使用者身份 進行session跟蹤而儲存在使用者本地終端上的資料 通常經過加密 cookie最早是網景公司的前 雇員lou montulli在1993年3月的發明。cookie是由伺服器端生成,...

瘦客戶端 胖客戶端 智慧型客戶端

胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...

胖客戶端 瘦客戶端和富客戶端

以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...