1. 程式人生 > >簡要介紹一下asynctask和handler的優缺點

簡要介紹一下asynctask和handler的優缺點

1 ) AsyncTask實現的原理,和適用的優缺點 AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以通過介面實現UI進度更新),最後反饋執行的結果給UI主執行緒. 使用的優點: l  簡單,快捷 l  過程可控         使用的缺點: l 在使用多個非同步操作和並需要進行Ui變更時,就變得複雜起來. l 最大併發數不超過5   2 )Handler非同步實現的原理和適用的優缺點 在Handler 非同步實現時,涉及到 Handler, Looper, Message,Thread四個物件,實現非同步的流程是主執行緒啟動Thread(子執行緒)àthread(子執行緒)執行並生成Message-àLooper獲取Message並傳遞給HandleràHandler逐個獲取Looper中的Message,並進行UI變更。 使用的優點: l  結構清晰,功能定義明確 l  對於多個後臺任務時,簡單,清晰     使用的缺點: l  在單個後臺非同步處理時,顯得程式碼過多,結構過於複雜(相對性)   AsyncTask介紹 Android的AsyncTask比Handler更輕量級一些,適用於簡單的非同步處理。 首先明確Android之所以有Handler和AsyncTask,都是為了不阻塞主執行緒(UI執行緒),且UI的更新只能在主執行緒中完成,因此非同步處理是不可避免的。   Android為了降低這個開發難度,提供了AsyncTask。AsyncTask就是一個封裝過的後臺任務類,顧名思義就是非同步任務。 AsyncTask直接繼承於Object類,位置為android.os.AsyncTask。要使用AsyncTask工作我們要提供三個泛型引數,並重載幾個方法(至少過載一個)。   AsyncTask定義了三種泛型型別 Params,Progress和Result。 Params 啟動任務執行的輸入引數,比如HTTP請求的URL。 Progress 後臺任務執行的百分比。 Result 後臺執行任務最終返回的結果,比如String。 使用過AsyncTask 的同學都知道一個非同步載入資料最少要重寫以下這兩個方法: doInBackground(Params…) 後臺執行,比較耗時的操作都可以放在這裡。注意這裡不能直接操作UI。此方法在後臺執行緒執行,完成任務的主要工作,通常需要較長的時間。在執行過程中可以呼叫publicProgress(Progress…)來更新任務的進度。 onPostExecute(Result)  相當於Handler 處理UI的方式,在這裡面可以使用在doInBackground 得到的結果處理操作UI。 此方法在主執行緒執行,任務執行的結果作為此方法的引數返回 有必要的話你還得重寫以下這三個方法,但不是必須的: onProgressUpdate(Progress…)   可以使用進度條增加使用者體驗度。 此方法在主執行緒執行,用於顯示任務執行的進度。 onPreExecute()        這裡是終端使用者呼叫Excute時的介面,當任務執行之前開始呼叫此方法,可以在這裡顯示進度對話方塊。 onCancelled()             使用者呼叫取消時,要做的操作 使用AsyncTask類,以下是幾條必須遵守的準則: Task的例項必須在UI thread中建立; execute方法必須在UI thread中呼叫; 不要手動的呼叫onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)這幾個方法; 該task只能被執行一次,否則多次呼叫時將會出現異常;

相關推薦

簡要介紹一下asynctaskhandler優缺點

1 ) AsyncTask實現的原理,和適用的優缺點 AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以通過介面實現UI進度更新),最後反饋執行的結果給UI主執行緒. 使

AsyncTaskHandler優缺點比較

當應用程式啟動時,Android首先會開啟一個主執行緒, 主執行緒為管理介面中的UI控制元件,進行事件分發,更新UI只能在主執行緒中更新,子執行緒中操作是危險的。這個時候,Handler就需要出來解決這個複雜的問題。由於Handler執行在主執行緒中(UI執行緒中),它與子執行緒可以通過Message物件來

簡要介紹一下目標檢測的網路,r-cnn, spp-net, fast-rcnn, faster-rcnn

簡要介紹一下目標檢測的網路 (1)R-CNN的原理:先用框把物體找出來,然後將找出來的框放入CNN中進行分類,這就是RCNN的簡單原理。(2)SPP-net:直接輸入整張圖片,所有區域共享卷積計算。解決了R-CNN中每張圖片都要提取的區域(selective search演算

非同步操作之AsyncTask Handler

1、AsyncTask AsyncTask是比Handler更輕量級的非同步處理方案,非同步的操作都是為了不阻塞主執行緒。 使用AsyncTask是通過繼承抽象類實現的:public abstract class AsyncTask<Params, Progress,

AsyncTaskHandler對比

AsyncTask和Handler對比 1 ) AsyncTask實現的原理,和適用的優缺點 AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現

Android之——AsyncTaskHandler對比

AsyncTask和Handler對比 1 ) AsyncTask實現的原理,和適用的優缺點 AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以通過介面實現UI進度更

AsyncTaskHandler非同步執行緒之間的區別

當應用程式啟動時,Android首先會開啟一個主執行緒, 主執行緒為管理介面中的UI控制元件,進行事件分發,更新UI只能在主執行緒中更新,子執行緒中操作是危險的。這個時候,Handler就需要出來解決這個複雜的問題。由於Handler執行在主執行緒中(UI執行緒中),它與子執行緒可以通過Message物件來傳

2.請介紹一下ListArrayList的區別,ArrayListHashSet區別

引用 equal ash arraylist 無序 lis 檢索 重復 lec 第一問:   List是接口,ArrayList實現了List接口。 第二問:   ArrayList實現了List接口,HashSet實現了Set接口,List和Set都是繼承Colle

4.請介紹一下c++Java的區別

完全 的區別 容錯 全面 內存 管理 數據 ava 操作符重載 1.指針 2.c++多重繼承,Java只能繼承一個父類,但是可以繼承多個接口 3.數據類型及類,Java完全面向對象,所有函數和變量都必須是類的一部分。而c++允許將函數和變量定義為全局,Java取消了c/

轉Android進程間通信(IPC)機制Binder簡要介紹學習計劃

trac named 組成 get tle 能力 計劃 英文 其中 轉自:http://blog.csdn.net/luoshengyang/article/details/6618363/ 在Android系統中,每一個應用程序都是由一些Activity和Ser

遞歸的簡要介紹理解

oct char html col charset filo type ctype doctype 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta cha

(一)關於spring security的簡要介紹以及相關配置jar包認識

重要 force cnblogs control 自定義攔截器 compute 編寫 -- 靈活 Spring Security是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring

Nginx 之 Nginx安裝配置文件簡要介紹

安裝 配置文件 1 概述本文主要介紹了nginx的兩種安裝方法,通過yum和編譯安裝,同時對安裝後的配置文件的語法和格式進行了簡要的介紹2 nginx的安裝2.1 yum安裝nginx在光盤自帶的base源裏沒有,需要通過官方路徑或者是epel源中安裝.官方:http://nginx.org/pack

linux中關於文件系統的簡要介紹一般操作

e2fs 並且 查詢 特殊權限 防止 nodes point 改變 標準 創建文件系統——分區格式化 格式化: 低級格式化: 劃分磁道 高級格式化: 創建文件系統,按照某種特定的標準,將整個分區劃

AD9854原理圖、PCB設計原始檔,AD9854的簡要介紹及使用心得一些建議——【電路模組使用心得1】

原理圖: 鄙人習慣在原理圖上將各種細節標註清楚~ PCB : 3D封裝看著舒服~ 晶片主要特點: 1. 高達300MHz的系統時鐘; 2. 能輸出一般調製訊號,FSK,BPSK,PSK,CHIRP,AM等; 3. 100MHz時具有80dB的信噪比; 4.

介紹一下eventpp,我的開源C++ 事件派發回撥程式碼庫

我(wqking)開發,使用標準C++11規範。 eventpp是一個 C++ 事件庫,它提供的工具允許應用程式元件通過排程事件並監聽它們來相互通訊。使用eventpp,您可以非常輕鬆地實現訊號/插槽機制或觀察者模式。 特性 支援同步事件排程和非同步事件佇列。 可配

Android系統匿名共享記憶體Ashmem(Anonymous Shared Memory)簡要介紹學習計劃

                        在Android系統中,提供了獨特的匿名共享記憶體子系統Ashmem(Anonymous Shared Memory),它以驅動程式的形式實現在核心空間中。它有兩個特點,一是能夠輔助記憶體管理系統來有效地管理不再使用的記憶體塊,二是它通過Binder程序間通訊機

Android WebView簡要介紹學習計劃

        我們通常會在App的UI中嵌入WebView,用來實現某些功能的動態更新。在4.4版本之前,Android WebView基於WebKit實現。不過,在4.4版本之後,Android WebView就換成基於Chromium的實現了。基於Chrom

B-樹B+樹的簡要介紹

B-樹和B+樹 二叉排序樹、平衡二叉樹等查詢方法均適用於儲存在計算機記憶體中較小的檔案,統稱為內查詢法。若檔案很大且存放於外存進行查詢時,這些查詢方法就不適用了。 內查詢法均以結點為單位進行查詢,需要反覆地進行內、外存的交換。 1970年,適用於外查詢的平衡多叉樹——B-樹被提出來,

GAN:生成式對抗網路介紹優缺點以及研究現狀

本博文是轉載自一篇博文,介紹GAN(Generative Adversarial Networks)即生成式對抗網路的原理以及GAN的優缺點的分析和GAN網路研究發展現狀。下面是內容。 1. 生成式模型 1.1 概述     機器學習方法可以分為生成方法(gen