2016-02-11 131 views
0

我正在使用服務來執行長時間運行的過程。我將活動中的服務綁定到啓動過程。以下是綁定該服務的代碼。混淆服務綁定和解綁Android

val intent = Intent(context,SaveSessionService::class.java) 
context.bindService(intent, mSaveSessServiceConnection, AppCompatActivity.BIND_AUTO_CREATE) 

服務在後臺完成後,我試圖停止服務。我正在使用stopService()。但是我正在看到活動泄漏服務連接錯誤。在對SO問題進行一些閱讀之後,知道當服務綁定到BIND_AUTO_CREATE時,我們無法使用stopService停止服務。

我的問題是我該如何連接服務,因爲我也讀過長期運行服務調用startService也不可取。使用IntentService會更好嗎(我不這麼認爲,因爲按照文檔只有Service應該用於長時間運行的任務)?

我不能參考活動,一旦我轉到服務。我應該能夠停止服務本身的服務。

那麼在這個用例中,哪一個更好,使用startService啓動服務還是使用IntentService?

回答

0
  1. 如果你已經開始用bindService()的服務,那麼它應該自動停止調用unbindService()後,如果沒有其他綁定。

  2. 如果您使用startService()開始服務,那麼您應該在stopService()之後停止服務,或者服務完成後可以致電stopSelf()。這通常是首選的方法。

  3. 如果最好使用IntentService取決於服務提供的功能 - 問題沒有關於此的任何細節。

  4. 正如前面提到的,你可以用stopSelf()停止從服務本身的服務如前所述