幾個常用的非同步架構和網路訪問架構區分對比,架構區分對比

來源:互聯網
上載者:User

幾個常用的非同步架構和網路訪問架構區分對比,架構區分對比
Part1:

由於在我們的程式中,不允許一些耗時的任務在主線程中出現,主要是為了防止阻塞主線程而導致的Anr(Application not Responding),一些耗時任務主要包括:

網路訪問,緩慢的磁碟操作,比較耗時的演算法

當我們的主線程在一定時間裡對某一事件的處理超過一定時間後會主線程會崩潰報ANR,

通常的解決方案:採用子線程技術來將耗時任務與主線程進行脫離

1、handler機制

只需要將UI更新參數在子線程中使用sendMessage發送到定義好的Handler裡的handleMessage裡既可以在主線程中更新UI(Handler實現了從子線程到主線程之間的跳轉)

2、runOnUiThread方法

使用這個方法,既可以使得當前主線程擷取cpu資源,從而進行UI的更新(至於如何從子線程中返回資料,方法很多,比如使用介面來回調擷取參數)

3、使用我們熟悉的AsyncTask類

AsyncTask使用詳解和源碼分析


Part2:網路訪問

大家都熟知的右HttpClient和HttpUrlConnection兩種方式,當然還有像Volley和OkHttp以及AsyncHttpClient

針對前兩種最原始基礎的方式,是不具備非同步處理能力的,也就是需要我們配合part1裡的非同步處理架構來使用,否則就只能接受ANR這赤裸裸的尷尬

Volley則是具備了非同步訪問的能力而且訪問結束的回調方法是處於主線程中的,這樣就可以直接脫離非同步訪問架構來單獨使用了(還能夠替代Universal-Image-Loader非同步載入圖片喔)Volley使用詳解

AsyncHttpClient則是對HttpClient的一種非同步封裝,它對於Volley的一個缺陷就是回調方法依然處於子線程中,我們依然需要使用part1裡的非同步架構來解決問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.