Android+Handler+Thread 那些事兒
前言,才開始學安卓十幾天,不料被線程擋住了前進的步伐,因為之前操作系統課程並沒有認真聽老師講課,導致現在理解這些抽象的東西有些小困難。沒關系,苦學之路,總會碰到坎坷,這裏也給那些迷失在Android之路的小生們鼓勵,每天多學一點,就是給自己最大的饋贈。
1.可能有很多人看到這個線程就有點慌亂了手腳,這個名詞有點高大上,我是這麽覺得的,無獨有偶,我覺得同步,異步也是一樣,如果從一個剛入門Android的同學,可能會很難理解,遇到這些問題就想跳過,我就是這樣的人。
2.對於Android開發來說,UI是特別重要的,如果你功能再強大,但是界面真的很醜,那真是太可惜了。所以Android是特別講究UI主界面的,所以她有一個專門的主線程,就是為了一心一意為他服務的。UI很漂亮,所以我用了她,主線程就是她背後的男人了。
3.女人總是要展示最美的一面給別人看,所以背後掏錢買衣服,買錢包的還是男人-----主線程,當然其他小男人-----子線程,就沒有資格了,破壞別人婚姻的都沒有資格的,那他們幹什麽呢...
4.其實這些小男人-----子線程,是為主線程服務的,主線程一個人忙不過來,所以招了一些可靠的人來幫他。比如啊,拿什麽快遞,拿什麽外賣,比較費時的事情,就交給子線程了。如數據庫查詢啊,文件下載啊,這些主線程都不想親自去跑,畢竟他還要去疼自己的老婆的。
5.那子線程和主線程怎麽交互呢?比如啊,你叫你同學幫你拿快遞,這裏已經產生了一個子線程,就是你不是親自去拿快遞,你同學扮演的就是子線程。
然後,你跟你同學說,12點的話,幫我把快遞放在宿舍,1點的話,幫我把快遞放在圖書館,2點的話,幫我把快遞放在課室...然後要你同學每個時間段應該怎麽做,這些都是定義一個handler,每個時間段就是一個msg.what,但是這些都沒有發生過,只是預想。
6.實際上呢,你同學只會傳遞一個時間的信息給你,說明他都按照你的吩咐去做了,所以這個時間的信息就特別關鍵了,在Android中叫做Message,在子線程中,也就是你同學的角度,他會sendEmptyMessage給你 ,參數是你自己定義的時間。而作為你的角度,也就是在主線程中,你定義了這些時間信息即是meg.what,然後你根據時間,更新自己的UI了。
7.比如啊,主線程是長江,子線程是長江的支流,然後handler就是支流到長江的一座橋,長江派了一個handler使者去監視支流完成的工作,然後支流打電話msg.what告訴長江這裏的情況,然後長江繼續向東流,更新UI
8.最後在寫一句激勵語吧-----既然你選擇了,便不顧風雨兼程!晚安思密達-----2017/7/10 0:30
Android+Handler+Thread 那些事兒