Thread與Handler淺介紹

Thread簡單來說,就是執行Activity的時候,可以呼叫來幫忙執行一些小工作的分頁

因為是跟Activity一起運行的所以可以看成是一個平行世界(?

Thread能動到Activity的部分主要就只有全域變數了,就算是把他叫出來的副程式也是除了呼叫他以外沒有別的互動了

因為這個關係所以Activity在執行的時候沒辦法知道,到底叫Thread處理的事情處理好了沒

萬一猜錯了結果用到了null整個程式就會GG啦

所以這個時候就是Handler出場啦~

Handler作為Thread與Activity的仲介(?),Thread可以把他做好的一些資料用bundle的方式傳給Handler還可以告訴他現在是什麼事做好了,讓他可以告知Activity的下一步動作

這樣就可以不用為了傳值做一堆全域變數啦

這是一個基本的Handler


這是在Thread告知Handler的樣子


順帶一提,bundle就像$_POST[]一樣,可以用一個字串來找到當初放的值

再來就是要詳細的介紹一下Thread了(說好的淺介紹!?

Thread這貨雖然說是在背後接任物默默執行的,但其實也沒有這麼好用!!

像之前提到的



這個就只能一回用而已,因為當你把他.下去就會發現,他並沒有停止或是換Runable的方法

如果你以為他做完後就自己會關掉,那你點下start()的瞬間,你的程式就會G了

所以這邊就小賣一下自己做的Thread



裡面除了建構子跟run以外,都是外加的副程式

看到run裡面的while大概就能猜到,他是真的run完一次之後就裝死了...

所以為了要讓他可以重複使用,我加了一個判斷式在while裡面

當他有工作(runable)而且不是在執行中,就讓他開始執行工作

如果沒有判斷是否執行過的話,他就會一直while到工作沒有,然後爆掉

所以要注意不要讓他同一件事一直鬼打牆

留言

這個網誌中的熱門文章

基本元件Spinner與ListView

使用SQLite