1. 程式人生 > >Android 五大基本元件之 Service 篇

Android 五大基本元件之 Service 篇

 把service的一些特性總結一下,基本知識就不介紹了.

  1、主要在後臺執行。

  2、分兩種型別:

  remote和location(遠端和本地)

  區別:遠端的可以用在不同程序間訪問,通過aidl實現(aidl以後介紹),當訪問的程序結束掉後,還可以在後臺繼續進行。

  本地的是在同一個程序間訪問,當訪問的程序結束後一起關掉。

  3、開啟service的方法有兩種:

  一種:直接開啟法:

  通過startservice(Intent)這個方法開啟,與之對應的是stopservice(Intent)這個方法關閉。

  二種:通過bind的方法:

  通過bindservice這個方法開啟連線上service,與之對應該的是unbindservice這個方法斷掉連線並關閉service.

  需要注意的是:

  (1)第一種方法只能開啟service讓它先執行起來,如果其它應用要使用他必須得bindService(Intent,ServiceConnection,int),然後再生成一個service的物件,就可以引用這個service物件裡的方法了。

  (2)如果用第一種方法開啟,必須用stopservice關閉service,如果末呼叫stopservice,本地service有的時候應用程式雖然已經退出了,但是這個程序還末被系統回收,service還會執行,遠端也需要自己關。

  (3)如果第一種方法開啟,每個應用想bind這個service時,需要掉用bindservice,如果不想連線了就只需要掉用 unbindservice,這個只是斷開與service的連線,而service還在後臺執行,此時過程中service在startservice 時呼叫oncreate()-->onstart(),在stopservice時呼叫onDestroy().

  (4)如果service在bind之前末開啟service,應用可以通過bindservice這個方法先開啟service再連線service, 這就是上面說的第二種開啟方法,這種方法在呼叫unbindservice時不但會斷掉連線還會關閉service,此時過程中service在 bindservice時呼叫oncreate()-->onbind(),在unbindservice時呼叫 onunbind()--->onDestroy().

  建議:

  當有多處應用要訪問一個遠端的service時,可以先啟動service在後臺執行,然後在每一個應用中bind這個service,這樣的話很方便,而且在應用程式中開啟service也會快一點。