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到工作沒有,然後爆掉
所以要注意不要讓他同一件事一直鬼打牆
因為是跟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到工作沒有,然後爆掉
所以要注意不要讓他同一件事一直鬼打牆
留言
張貼留言