亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析安卓開發(fā)中的多線程

        2016-10-21 14:56:27張旭輝
        電子技術(shù)與軟件工程 2016年9期

        張旭輝

        【關(guān)鍵詞】多線程 消息 AsyncTask類

        1 引言

        隨著移動平臺走入人們的視野,移動平臺的開發(fā)越來越為大家所熟悉,而多線程作為安卓開發(fā)中非常重要部分,在很多應(yīng)用程序都是不可或缺的。

        2 線程的概念

        2.1 進程與線程

        進程的概念想必大家都比較熟悉,一個進程就是一個執(zhí)行中的程序,而每一個進程都有自己獨立的內(nèi)存空間、系統(tǒng)資源,每一個進程的內(nèi)部數(shù)據(jù)和狀態(tài)都是完全獨立的。

        與進程相同的是,線程也是一段具有某個特定功能的代碼,是單個順序的流控制。但不同的是,同類的多個線程共享內(nèi)存空間和系統(tǒng)資源,所以系統(tǒng)在線程之間切換時,占用資源比進程小,因此線程也被稱為輕量級進程。

        多線程指的是在單個程序中可以同時運行多個不同的線程,以執(zhí)行不同的功能。這使得一個程序的多行語句看上去好像在同時運行。

        2.2 實現(xiàn)線程的兩種方式

        當(dāng)一個安卓程序第一次啟動時,會默認啟動一個主線程,在主線程中主要負責(zé)處理與UI相關(guān)的事件,包括屏幕繪制、事件響應(yīng)等,并把相關(guān)的事件分發(fā)到對應(yīng)的組件進行處理。因此主線程通常又被叫做UI線程。

        在Java中若想新增線程主要通過兩種方式:一是繼承Thread類,一是實現(xiàn)Runnable接口,無論是哪種方式,都將實現(xiàn)線程的核心方法run,通常將需要線程處理的事情都放在run方法中,當(dāng)啟動線程時會自動調(diào)用run方法。

        3 安卓開發(fā)中的多線程

        3.1 Thread+Handler+Message結(jié)構(gòu)

        我們以實現(xiàn)Runnable接口的方式定義線程類,代碼如下。

        執(zhí)行如上代碼時并不能實現(xiàn)我們想要的效果,反而會發(fā)生異常使程序崩潰退出。這是因為在安卓中若想更新UI則必須由創(chuàng)建它的線程來完成。由于我們在程序中創(chuàng)建了新的線程,所以程序中就存在主線程和子線程。主線程的職責(zé)是創(chuàng)建、顯示和更新UI控件、處理UI事件、啟動子線程,而子線程則負責(zé)計算時間以及向主線程發(fā)出更新UI消息,而不是直接更新UI。但問題是子線程和主線程如何通信呢?在Android中提供了Message作為消息的載體,線程將一個個的消息加入到消息隊列中,Android中又提供了Handler類來對消息進行處理,例如修改UI就可以在Handler中實現(xiàn)。

        在線程類中將修改UI改為發(fā)送消息。

        hand.sendMessage(msg); //發(fā)送消息,hand為自定義的Handler類對象

        3.2 AsyncTask類

        為了能夠?qū)崿F(xiàn)多線程,Android提供了AsyncTask類,AsyncTask類中包括如下方法。

        3.2.1 onPreExecute()

        在線程被調(diào)用后立即執(zhí)行,一般用來在執(zhí)行后臺任務(wù)前對UI做一些初始化。

        3.2.2 doInBackground(Params... params)

        在onPreExecute()完成后立即執(zhí)行,用于執(zhí)行較為復(fù)雜的操作,此方法將接收輸入?yún)?shù)和返回計算結(jié)果。在執(zhí)行過程中可以調(diào)用publishProgress(Progress... values)來更新進度信息。

        3.2.3 onProgressUpdate(Progress... values)

        在調(diào)用publishProgress(Progress... values)時,此方法被執(zhí)行,直接將進度信息更新到UI組件上。

        3.2.4 onPostExecute(Result result)

        當(dāng)后臺操作結(jié)束時,此方法將會被調(diào)用,計算結(jié)果將做為參數(shù)傳遞到此方法中,直接將結(jié)果顯示到UI組件上。

        所有方法均不需要手動調(diào)用,其中doInBackground(Params... params)中不能修改UI界面。

        4 結(jié)論

        在安卓開發(fā)中多線程是非常重要的操作,安卓中主要提供了兩種方式來實現(xiàn)多線程:消息隊列加Handler的方式和AsyncTask類的方式,兩種方式各有優(yōu)勢,可以根據(jù)實際案例進行選擇。

        成人无码午夜在线观看| 成年女人免费v片| 婷婷五月婷婷五月| 午夜亚洲www湿好大| 亚洲老熟妇愉情magnet| 日本女同性恋一区二区三区网站| 日韩内射美女片在线观看网站| 三级特黄60分钟在线观看| 99热这里只有精品69| 亚州韩国日本区一区二区片| 中文字幕日韩有码在线| 国产午夜福利在线观看红一片| 国产喷水福利在线视频| 免费国人成人自拍视频| 亚洲网站一区在线播放| 国产精品户外野外| 国产亚洲精品自在久久蜜tv | 精品国产你懂的在线观看| 日韩精品一区二区三区人妻在线| 中文字幕日韩三级片| 中文在线а√天堂官网| 国产美女胸大一区二区三区| 国产一区二区三区我不卡| 日韩人妻无码精品久久免费一| 国产成人精品精品欧美| 国产在线看不卡一区二区| 亚洲精品久久久久一区二区| 先锋影音最新色资源站| a级国产精品片在线观看| 久久夜色精品国产噜噜噜亚洲av| 久久综合九色综合久99| 在线观看91精品国产免费免费| 国产精品亚洲一区二区三区正片 | 久久精品国产亚洲av四叶草| 消息称老熟妇乱视频一区二区| 欧美在线资源| 亚洲天堂线上免费av| 色狠狠色狠狠综合天天| 人禽无码视频在线观看| 好爽要高潮了在线观看| 国产亚洲精品美女久久久久|