Service(服務)是 Android 應用程式提供的一個執行背景程式而不需與使用者互動的元件,Service 像 Activity一樣,一個 Service 也有生命週期方法,可以執行監視它的狀態改變。但是比 Activity 的生命週期方法少,只有三個且它們是公有的(public)而不是受保護的(protected)。
主要介紹內部調用方法和外部調用方法的關係。
startService() - 啟動 Service 服務,onCreate()→onStartCommand()→onDestroty
手動調用 startService() 後,自動調用內部方法:onCreate()、onStartCommand()
startService() - 啟動 Service 服務週期 |
stopService() - 關閉 Service 服務
手動調用 stopService() 後,自動調用內部方法:onDestory()
stopService() - 關閉 Service 服務週期 |
bindService() - 綁定 Service 服務,onCreate()→onBind()→onUnBind()→onDestroty
手動調用 bindService() 後,自動調用內部方法:onCreate()、onBind()
bindService() - 綁定 Service 服務週期 |
unbindService() - 解綁 Service 服務,onCreate()→onBind()→onUnBind()→onDestroty
手動調用 unbindService() 後,自動調用內部方法:onCreate()、onBind()、onDestory()
unbindService() - 解綁 Service 服務週期 |
手動調用方法 |
作用 |
startService() |
啟動服務 |
stopService() |
關閉服務 |
bindService() |
綁定服務 |
unbindService() |
解綁服務 |
5 個內部自動調用的方法:
內部自動調用的方法 |
作用 |
onCreat() |
創建服務 |
onStartCommand() |
開始服務 |
onDestroy() |
銷燬服務 |
onBind() |
綁定服務 |
onUnbind() |
解綁服務 |
5 個內部自動調用的方法:
回檔 |
描述 |
onStartCommand() |
系統調用此方法當另一元件,如一個活動,通過調用startService()要求該服務啟動。如果要實現方法,它工作完成後停止服務,通過調用stopSelf()或stopService()方法。 |
onBind() |
該系統調用這個方法當其他元件要通過調用bindService()綁定服務。如果實現此方法,必須提供用戶端與服務進行通信,通過返回一個IBinder物件的介面。必須實現此方法,但如果不希望被綁定,那麼應該返回null。 |
onUnbind() |
系統調用此方法,當所有客戶都從服務發佈的特定介面斷開。 |
onRebind() |
該系統調用這個方法時,新的用戶端已連接到服務,它事先未通知,所有已經上解除綁定後(意向)斷開它。 |
onCreate() |
該系統調用時,使用onStartCommand()或onBind()首先創建的服務這個方法。此調用需要執行一次性安裝。 |
onDestroy() |
系統調用這個方法當服務不再使用(被銷毀)。服務應該實現這個用於清理,如執行緒,註冊的偵聽器,接收器等任何資源 |
Service(服務)範例:
public class ExampleService extends Service { int startMode; // indicates how to behave if the service is killed IBinder binder; // interface for clients that bind boolean allowRebind; // indicates whether onRebind should be used
@Override public void onCreate() { // The service is being created } @Override public int onStartCommand(Intent intent, int flags, int startId) { // The service is starting, due to a call to startService() return mStartMode; } @Override public IBinder onBind(Intent intent) { // A client is binding to the service with bindService() return mBinder; } @Override public boolean onUnbind(Intent intent) { // All clients have unbound with unbindService() return mAllowRebind; } @Override public void onRebind(Intent intent) { // A client is binding to the service with bindService(), // after onUnbind() has already been called } @Override public void onDestroy() { // The service is no longer used and is being destroyed } } |
沒有留言:
張貼留言