2011-03-09 33 views
6

我對服務生命週期感到困惑。
我有以下許多問題:啓動並綁定的服務的生命週期?

  1. 如果我的應用程序調用startService()多次服務,是否會有多個服務同時運行?還是隻有一個?

  2. 作爲第一個,如果我在應用程序中多次調用bindService()服務,我的應用程序會發生什麼?

  3. 假設我有一個已經通過startService()啓動的服務,然後再綁定它來指示它執行某些操作。在這種情況下,如果我指示(通過此Binder界面)該服務執行其stopSelf()方法,運行的服務是否立即停止?

  4. 再假設我有一個只能通過bindService()啓動的服務,並且onUnbind是重寫返回true,在這種情況下,我應該明確地調用stopSelf方法來關閉服務?

回答

-1

是的,你可以同時運行多個服務。但是如果你使用的是服務,你必須小心。如果您要啓動服務,則必須使用onDestroy()或自定義方法等任何方法停止該服務,因爲每當完成活動時,該服務仍在後臺運行。

還有一件事:只在需要像媒體播放器這樣的後臺進程時才使用服務;否則,你可以通過活動來實現所有這些。

有關詳細信息讀取的Android設備上存在服務的Android developer service document.

4
  1. 僅有一個實例。啓動服務只啓動一次,其他啓動調用將導致onStartCommand重複調用,但不會啓動同一服務的新實例。

  2. 如果通過綁定服務啓動綁定服務,並且這是服務的第一次使用,則會創建一個新實例並調用onBind方法。

  3. 是的。然而,由服務註冊的服務和監聽程序啓動的線程將被泄漏。您應該在onDestroy方法上處理這些資源。

  4. 無需致電停止自我。當最後一位用戶從服務中解除綁定時,服務將自動銷燬。