Sunday, December 12, 2010

IntentService的功用

盧育聖的網站中,教了大家很清楚的IntentService的概念,但看了還不是很懂。
因為,這要從Thread講起(我接下來要說的,大家可以參考高煥堂-物件導向技術與執行緒模式一書找到更完整的解說)。
Android在傳遞訊息時,主要用到Looper和Message,每一個執行緒,都有一個Looper。
主畫面(UI)的Thread本身就有Looper去Handler(處理)各種訊息,但是,程式裡new出來的副Thread,當中的Looper必須被new出來,因為android沒有替副Thread做Looper。
想像一下,Looper是運轉中的果汁機,Message是柳丁,Android傳遞訊息的原理就是將Message丟進Looper,再由Handler(老闆娘)去處理看是要賣還是要自己喝。
在知道上面Thread、Looper、Message和Handler的概念後,我們再回到盧育聖的網站裡看。
IntentService繼承Service,我們先前知道,Service的幾個良好的特性︰
1.系統當發現資源不足,而砍殺現有程序時,Service是最後幾名被砍的,不會馬上被砍。
2.Service不用畫面就能做事情

所以,當我們用Intent去開啟IntentService時,就可以很放心的將要在背後做的事,放在IntentService去做,不用再擔心會被系統砍掉!

這裡還有asynctask和IntentService的差別。倒也可以順便看看。

總之,IntentService幫我們處理掉煩人的Looper、Message和Handler啦!

No comments: