標籤:des android style ar sp on art cti bs
前言:本文主要討論啟動遠程Service。
Service和Activity不在一個工程裡面,也即不在一個App裡面。不在一個進程裡,所以會用到AIDL。
Service的android:process屬性未指定。
一、startService
1、通過調用startService啟動服務的過程:
onCreate —》onStartCommand —》onStart
startService 僅用於啟動服務,如果Activity需要與Service進行通訊,需利用Broadcast。
2、而後,多次調用startService,服務會多次執行:
onStartCommand —》onStart
3、多次調用startService後,調用一次stopService即可結束服務。(若多次調用stopService,只有第一次有用)
4、調用stopService的服務結束過程:
—》onDestroy
另外,
Activity的啟動過程:onCreate —》onStart —》onResume
Activity的退出過程:onPause —》onStop —》onDestroy
二、bindService
1、通過調用bindService啟動服務的過程:
onCreate —》onBind —》(onServiceConnected)
bindService 可用於啟動服務,且能使Activity與Service進行通訊。
2、多次調用bindService,服務本身未執行任何操作。
3、所以一次unBindService就能結束服務。(若多次調用unBindService,第一次有用,後面會出錯)
4、調用unBindService的服務結束過程:
onUnbind —》onDestroy
三、先startService,後bindService
1、先調用startService,後調用bindService。服務的執行過程為:
onCreate —》onStartCommand —》onStart —》onBind —》(onServiceConnected)
2、先unBindService,後stopService。服務結束的執行過程:
onUnbind —》onDestroy
需注意的是:unBindService會執行到onUnbind,stopService會執行到onDestroy。
3、先stopService,後unBindService。服務結束的執行過程:
onUnbind —》onDestroy
需注意的是:stopService不會執行任何操作,unBindService會執行到onUnbind—》onDestroy。
四、先bindService,後startService
1、先調用startService,後調用bindService。服務的執行過程為:
onCreate —》onBind —》(onServiceConnected) —》onStartCommand —》onStart
2、先unBindService,後stopService。
服務執行的過程同 三。
3、先stopService,後unBindService。服務結束的執行過程:
服務執行的過程同 三。
五、總結
1、多次bindService時,服務本身的onBind不會被多次執行。
2、bind上一個Service後,執行一次unBindService就夠了。不然會出錯。
Android 兩種啟動Service(遠程)的方式:Bind 與Start