色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當前位置:IT培訓 > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > Android多線程的實現
Android多線程的實現
時間:2018-03-16作者:華清遠見

熟悉java的你,對多線程編程一定不會陌生吧。當我們需要執行一些耗時操作,比如說發起一條網絡請求時,考慮到網速等其他原因,服務器未必會立刻響應我們的請求,如果不將這類操作放在子線程里去運行,就會導致主線程阻塞,從而影響用戶對軟件的正常使用并使得用戶體驗度降低,那么就讓我們從線程的基本用法開始學習吧!

說到線程,就不得不先說線程和進程的關系,這里先簡單解釋一下。操作系統支持同時運行多個任務,一個任務通常就是一個程序,每個運行中的程序就是一個進程。當一個程序運行時,內部可能包含了多個順序執行流,每個順序執行流就是一個線程。

Android提供了四種常用的操作多線程的方式:分別是:

(1)Handler機制

(2)AsyncTask

(3)Activity.runOnUiThread(Runnable)

(4)IntentService

下面我將對這四種方式進行介紹

Handler機制(此方法最為常用,這里我將簡單概述)

Handler來根據接收的消息,處理UI更新。Thread線程發出Handler消息,通知更新UI。

代碼如下:

Android多線程實現

Android多線程編程

AsyncTask

AsyncTask: 異步任務,從字面上來說,就是在我們的UI主線程運行的時候,異步的完成一些操作。AsyncTask允許我們的執行一個異步的任務在后臺。我們可以將耗時的操作放在異步任務當中來執行,并隨時將任務執行的結果返回給我們的UI線程來更新我們的UI控件。通過AsyncTask我們可以輕松的解決多線程之間的通信問題。

怎么來理解AsyncTask呢?通俗一點來說,AsyncTask就相當于Android給我們提供了一個多線程編程的一個框架,其介于Thread和Handler之間,我們如果要定義一個AsyncTask,就需要定義一個類來繼承AsyncTask這個抽象類,并實現其唯一的一個doInBackgroud 抽象方法。要掌握AsyncTask,我們就必須要一個概念,總結起來就是: 3個泛型,4個步驟。

3個泛型指的是什么呢?我們來看看AsyncTask這個抽象類的定義,當我們定義一個類來繼承AsyncTask這個類的時候,我們需要為其指定3個泛型參數:

AsyncTask

-Params:這個泛型指定的是我們傳遞給異步任務執行時的參數的類型

-Progress:這個泛型指定的是我們的異步任務在執行的時候將執行的進度返回給UI線程的參數的類型

-Result:這個泛型指定的異步任務執行完后返回給UI線程的結果的類型

我們在定義一個類繼承AsyncTask類的時候,必須要指定好這三個泛型的類型,如果都不指定的話,則都將其寫成Void,例如:

AsyncTask

4個步驟:當我們執行一個異步任務的時候,需要按照下面的4個步驟分別執行

-onPreExecute(這個方法是在執行異步任務之前的時候執行,并且是在UI Thread當中執行的,通常我們在這個方法里做一些UI控件的初始化的操作,例如彈出要給ProgressDialog

-doInBackground(Params...params):在onPreExecute()方法執行完之后,會馬上執行這個方法,這個方法就是來處理異步任務的方法,Android操作系統會在后臺的線程池當中開啟一個worker thread來執行我們的這個方法,所以這個方法是在worker thread當中執行的,這個方法執行完之后就可以將我們的執行結果發送給我們的最后一個onPostExecute方法,在這個方法里,我們可以從網絡當中獲取數據等一些耗時的操作

-onProgressUpdate(Progess...values): 這個方法也是在UI Thread當中執行的,我們在異步任務執行的時候,有時候需要將執行的進度返回給我們的UI界面,例如下載一個網絡圖片,我們需要時刻顯示其下載的進度,就可以使用這個方法來更新我們的進度。這個方法在調用之前,我們需要doInBackground方法中調用一個publishProgress(Progress的方法來將我們的進度時時刻刻傳遞給onProgressUpdate方法來更新

Activity.runOnUiThread(Runnable)

利用runOnUiThread(Runnable)把更新UI的代碼創建在Runnable中,然后在需要更新UI時,把這個Runnable對象傳給runOnUiThread(Runnable)。Runnable對象就能在UI程序中被調用。如果當前線程是UI線程,那么行動被立即執行。如果當前線程不是UI線程,操作是發布到事件隊列的UI線程。

代碼如下:

Android多線程編程

Android多線程編程

IntentService

IntentService繼承自Service,是一個經過包裝的輕量級的Service,用來接收并處理通過Intent傳遞的異步請求?蛻舳送ㄟ^調用startService(Intent)啟動一個IntentService,利用一個work線程依次處理順序過來的請求,處理完成后自動結束Service。

以上就是我為大家帶來的安卓多線程相關知識,希望對大家以后在Android開發道路中有所幫助,更上一層樓!


發表評論

全國咨詢電話:400-611-6270,雙休日及節假日請致電值班手機:15010390966

在線咨詢: 曹老師QQ(3337544669), 徐老師QQ(1462495461), 劉老師 QQ(3108687497)

企業培訓洽談專線:010-82600901,院校合作洽談專線:010-82600350,在線咨詢:QQ(248856300)

Copyright 2004-2018 華清遠見教育科技集團 版權所有 ,京ICP備16055225號,京公海網安備11010802025203號

有位老師想和您聊一聊

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 高清一区二区三区四区五区| 国产成人精品一区| 亚洲а∨天堂久久精品喷水| 欧美日韩一区二区免费在线观看| 91欧美精品成人综合在线观看| 欧美国产极速在线| 亚洲天堂av在线免费| 国产精品成人播放| 好吊成人免视频| 国产亚洲精品久久久优势| 国产区亚洲区欧美区| 97视频在线观看视频免费视频| 日韩视频精品在线| 亚洲国产精品va在线看黑人动漫| 欧美怡红院视频一区二区三区| 欧美成人性生活| 亚洲欧美激情另类校园| 国产综合色香蕉精品| 热99久久精品| 欧美性猛交xxxx免费看| xvideos国产精品| 亚洲女人天堂成人av在线| 国产欧美欧洲在线观看| 欧美亚洲另类在线| 欧美电影免费播放| 波霸ol色综合久久| 国产一区二区三区视频在线观看| 亚洲成年人在线播放| 国产在线拍偷自揄拍精品| 51精品国产黑色丝袜高跟鞋| 欧美性少妇18aaaa视频| 欧美成人黑人xx视频免费观看| 有码中文亚洲精品| 亚洲欧美精品一区| 日韩经典中文字幕在线观看| 亚洲一区二区三区四区视频| 国产在线拍偷自揄拍精品| 国产欧美日韩精品在线观看| 狠狠躁天天躁日日躁欧美| 欧美区在线播放| 久久91超碰青草是什么|