2017-02-11 64 views
1

在我的應用程序中,我需要定期請求位置更新,我檢查活動中的設置,然後使用LocationServices.FusedLocationApi請求前臺服務中的位置。 如何將活動中的LocationRequest對象傳遞給服務?如何將LocationRequest對象從活動傳遞給服務?

編輯1:服務從活動和綁定開始。但我無法理解如何傳遞這個對象。

求助:我想我已經解決了。我已經正確地實現了綁定,然後我發現了這個答案:[1] How to send an object from one Android Activity to another using Intents? 我在服務中獲取Parceable時產生了noob錯誤,這導致了一個NullPointer,但我解決了它。所以我一直在尋找解決的辦法是: 使用Parceable(和正確地實現它;))

注意閱讀本鄰省評論:

谷歌建議不傳遞任何額外的參數,以服務使用意圖,它可能不會在服務端看到,因爲多個組件可以綁定到服務,並且onBind()不會總是被調用。

+0

請參閱如何使用活動綁定服務 –

+0

感謝您的答覆。 我忘記提及我的服務已開始並且與活動相關聯。 我將編輯原始帖子。 – filb

回答

0

Maybe you should study this

您將能夠了解如何結合和比服務(涉及傳球對象也)進行通信。

關於你的編輯問題擴展答案:

系統調用服務的onBind()方法返回的IBinder當客戶端(你的活動)使用bindService()方法結合。調用者(您的活動)使用這個從onBind()返回的實例,可以訪問該服務的公共方法。你可以有一個公共方法將用於向它發送參數/對象。

您可以進一步參考Google文檔Here

+0

感謝您的回覆。我忘了提及我的服務已經開始並且與活動相關聯。我將編輯原始帖子。 – filb

+0

如果您剛剛接觸過Android和開發,那麼我會建議您不要在不需要使用_EventBus_的地方使用,因爲在某些情況下,您可能會過度使用_EventBus_,並且代碼可能無法正常工作。將來嘗試瞭解您的代碼會給您帶來困難。 –

+0

謝謝Shoaib,我想我已經解決了。我已正確實施綁定,然後我發現這個答案:http://stackoverflow.com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-意圖?rq = 1 我在一個noob錯誤獲取Parceable的服務,這導致了一個空指針,但我已經解決了它。 所以我尋找的解決方案是:使用Parceable(並正確實施;)) – filb

0

其中一個解決方案是EventBus庫。 你可以從任何地方廣播一個對象,並在你想要的任何線程上訂閱該對象。例如在onStartCommand

EventBus.getDefault().register(this); 

: 你可以註冊並與這條線結合後訂閱該事件。

和註銷(取消)中的onDestroy

EventBus.getDefault().unregister(this); 
相關問題