Service的基礎講解,一下兩篇文章講的不錯:
1.http://www.360doc.com/content/14/0415/18/2793098_369238276.shtml
2.http://blog.csdn.net/ryantang03/article/details/7770939 service生命週期相關
這裏只做一些總結和常用知識面試點等:
1.Service是在哪個線程中運行的?是主線程嗎?
答案:是運行在主線程的,也就是UI線程,而並不是子線程,所以如果有耗時操作,不能在Service中直接寫,必須新起線程。
2.Service生命週期
需要注意的是在調用了onBind之後,service就和對應的activity進行了綁定,如果activity退出時,service也會停止掉。
當同時調用了startService和bindService兩個方法的時候,service必須經過stopService和unBindService兩部,service才能進行destroy操作。
3.如果我們要進行耗時操作,我們當需要在service中進行耗時操作時,需要怎樣做?
(1).在Service中啓動線程進行操作。
(2).用IntentService,它自帶了Worker線程。
有關IntentService的使用可以參考http://www.tuicool.com/articles/zeMFFvB
4.既然Service不能處理耗時操作,如果要進行耗時操作,我們必須在它內部啓動thread或者用IntentService,那我們爲什麼還要用Service而不是直接用Thread?
(1).Service只會創造一次,而且程序可以控制它停止
(2),Service也可以被多個Activity控制,進行資源共享,有自己獨立的生命週期方法。而Thread一旦起來了就沒有辦法控制,且資源不共享,不能在多個Activity中控制一個thread
(3).Service中可以通過broadcast來啓動service,而thread不可以。
可參見:http://jiangnanlove.iteye.com/blog/1333347
5.Service可以運行在一個單獨的進程中,可以在AndroidManifest中配置process即可。這樣我們可以通過啓動Service來完成一個進程的創建。
6.在使用過程中要注意Service的增加會增加耗電量,所以要注意Service的管理和使用。