1.被一個組件經過startService()啓動,運行在UI線程的後臺。有兩種狀態:1.未綁定狀態:開啓後,一直運行在後臺,除非本身中止本身或在某些狀況下被系統回收(應該在任務完成後本身關閉)2.綁定狀態:經過bindService()進入綁定狀態,此時能夠與組件進行通訊(也能夠是進程間通訊),能夠被多個組件綁定,當綁定的全部組件銷燬會(組件銷燬時,仍是解綁時?),service自動銷燬。android
2.服務能夠以上兩種狀態同時存在線程
3.任何組件均可以用這個service,就像用activity同樣,即使是其餘程序中的組件。固然也能夠把service設爲私有,只有本應用可訪問。
對象
4.若服務中進行耗時操做,必須在服務中另外開啓一個線程,不然可能致使ANR繼承
5.startService()調用startCommand(),必須經過stopself或stopService銷燬進程
bindService()不調用startCommand(),調用onbind()返回一個Ibinder對象用以獲取servic進行交互it
6.何時應該用service?當你想要離開你的應用,之後還想讓他運行在後臺。若是隻在當前頁交互,開啓一個線程就行了。後臺
7.爲了正確的啓動一個srevice,啓動一個service的時候要用顯示的Intent,若是要加intent filter ,也要再包名加入Intent中
service
8.經過設置 android:exported="false" 讓service 僅本程序可用
程序
9.一個服務能夠繼承service或IntentService,若是不須要同時完成多任務推薦用IntentService通信
10.先startService,而後bindService.當調用stopself或stopservice並不能關閉sevice,直到全部的綁定都解綁。
11.一個service能夠同時被多個組件綁定,當全部的綁定解綁後才能銷燬。