2011-03-09 66 views
2

我需要在Android中同步獲取服務。我確定它已經在運行,我只需要在我的適配器中訪問它。一旦服務可用,我應該只通過一個參考,還是我可以用context.getService(...)來得到它?什麼是推薦的解決方案?有沒有辦法在Android中同步獲取服務?

回答

2

我相信你有一個適配器創建和銷燬的活動。因此,適配器的生命週期應該與您的活動的生命週期相匹配。結論是將服務的引用傳遞給創建的適配器,因爲它是綁定和解除綁定服務的活動。 :-)

0

你感興趣的是制定綁定服務的概念。看看本地服務示例例如Service SDK頁面上:

http://developer.android.com/reference/android/app/Service.html

此示例演示如何綁定到創建這樣你可以得到一個常設參考,並使得它直接調用服務當你受束縛時。當您以這種方式綁定/解除綁定到服務時,您也不必擔心明確地調用開始和停止。只要至少有一個組件綁定到該服務,該服務就會運行。

希望有幫助!

+2

但綁定到服務是異步的,所以這不是一個同步解決方案。 – Leo 2011-03-09 21:15:42

+0

確實如此,但Binder界面是以請求的方式直接訪問服務對象的唯一途徑。在需要服務時不會執行綁定操作,而是以遵循活動或其他系統組件的生命週期的方式進行綁定操作。可能需要更多關於該問題的信息來提出更好的解決方案。 – Devunwired 2011-03-09 21:25:18

+0

@Devunwired根據你需要訪問服務的時間/地點,這可能只是一個設計缺點。我真的想要訪問Activity.onResume()中的服務。然而,我已經嘗試在Application.onCreate()和Activity.onCreate()中調用bindService(),但Activity.onResume()運行時不會調用ServiceConnection.onServiceConnected()。看起來,生命週期事件以ServiceConnection.onServiceConnected()不會運行的方式緊接着排隊,直到Activity已經運行。如果你有任何想法,我想聽聽他們。 – spaaarky21 2013-12-01 08:37:37

相關問題