2015-10-07 50 views
-3

我想,並希望這不是老慣了的問題。 這就是我想要的:如何啓動並綁定到服務?

  1. 啓動與setForeground()設置一個服務S的活性的(即與永久通知服務);
  2. A綁定到S以公共方法控制它;
  3. 用戶關閉A(onDestroy),但該服務必須仍在運行;
  4. 用戶打開A,A發現服務S已經開始並且簡單地重新綁定到它。

我該怎麼做?

+0

您是否閱讀過文檔? http://developer.android.com/guide/components/bound-services.html – FrankMonza

回答

1

我該怎麼做?

第4步是相同的步驟#1和步驟#2,所以你只是做同樣的事情,在這兩種情況下:通話雙方startService()bindService()。在你的情況下,你的startForeground()工作onCreate()服務(而不是onStartCommand()),因爲你不需要多次(一個startService()呼叫)。並且務必明確規劃何時您將通過stopService()stopSelf()only have the service running when it is actively delivering value to the user停止該服務。

+0

是的,我的錯。我刪除了我的意見,以避免您認真閱讀(因爲我現在已經解決),但你已經回答了。無論如何,我錯誤地認爲onBind()方法再次被調用。現在,它的工作,謝謝。 – VanDir

1

如果您在服務已經運行時調用startService,則什麼都不會發生。服務會自動創建爲單例,因此框架將只處理1個實例。

在您的服務的onCreate()中,請致電startForeground(int id, Notification notif)

正如你將它設置爲startForeground,摧毀一個綁定到該服務不會破壞它的活動,所以沒有問題存在。

現在只需綁定到服務在您的活動的onResume,並在onPause或解除綁定的onStop(無論最適合你的,都可以在不同的設置使用)。