我有一項應用程序啓動後運行的服務,我想知道如何從該服務中隨時獲取數據以便在任何時候進行活動,而無需重新啓動服務如何從已運行的服務中獲取數據?
回答
爲此,請綁定服務。大量的信息可以在Android文檔中找到:http://developer.android.com/guide/topics/fundamentals/bound-services.html
如果服務已經運行,調用startService()
不會「重新啓動服務」。它只是發送一個命令,由onStartCommand()
中的服務接收。因此,您可以發送觸發服務的命令來代表活動執行某些操作,這可能涉及從服務返回活動的通信(例如,通過Messenger
)。或者,正如@Tom Dignan指出的那樣,您可以綁定到該服務。在處理配置更改時要小心一點,比如當用戶旋轉屏幕時。
沒有違法,但「信使」和「綁定」的方式讓我忙了大約2天才搞清楚。這並不是錯誤的,但它使我對事物過於複雜。
在我看來,它更容易的服務廣播數據,以便活動可以訪問數據時可用。 做教程此鏈接: http://www.websmithing.com/2011/02/01/how-to-update-the-ui-in-an-android-activity-using-data-from-a-background-service/comment-page-1/#comment-734
(帶我10分鐘找出並實施...優秀教程)
目前(2013年底),有得到一個參考到正在運行的更好的解決方案在Android中使用服務,只需使用像Otto或EventBus這樣的庫。
在您的活動,服務於eventbus添加eventbus,實現雙方的onEvent()
方法,創建一個或兩個xyzEvent
類(xyz
=您的活動名稱),註冊活動和服務引用(以下簡稱「本」) 。
在活動總線上發佈針對您活動服務的活動,通過您的服務的onEvent
方法發現活動,在活動中發佈新活動,在活動的onEvent
方法中發現它:現在您擁有自己的活動服務參考(服務的this
)。
所有設置和完成沒有任何大驚小怪。活動和服務相當分離,易於實施。沒什麼特別的。沒有直接的約束,沒有使者,沒有AIDL。只是老式的K.I.S.S原理。
現在您在活動中引用了您的服務,並且可以調用該服務中可用的任何直接方法。
- 1. 如何從正在運行的服務中獲取數據
- 2. 如何從Android服務獲取數據?
- 3. 如何從Web服務獲取數據?
- 4. 如何獲取數據從服務器的服務器地址
- 5. 如何從web服務獲取數據(選擇的行)到xcode?
- 6. Php Web服務。如何從數據庫中獲取數據?
- 7. 如何獲取從服務器獲取數據的url/xmlhttprequest?
- 8. 如何從服務器獲取數據後在運行時使用controll
- 9. 從服務中獲取數據android
- 10. 如何從我的服務中獲取數據或消息?
- 11. 如何從vue js中的服務器獲取數據?
- 12. 如何取消已運行的ajax請求(在服務器端)
- 13. 如何從rails中的遠程服務器數據庫中獲取數據?
- 14. 我如何從Excel中使用SQL服務器獲取數據
- 15. ASP.net核心:如何從服務中獲取文件數據?
- 16. 如何從quils中獲取數據發送到服務器?
- 17. 如何從WCF服務中獲取逐段數據
- 18. 如何從SQL服務器維度中獲取數據到mongoDB
- 19. 如何從JavaScript從服務器獲取數據?
- 20. 從服務器獲取數據Objective-C
- 21. 從Django服務獲取JSON數據
- 22. Android,從服務器獲取數據
- 23. 從服務器獲取json數據
- 24. 從週期服務器獲取數據
- 25. HorizontalScrollView從服務器獲取數據
- 26. Javascript從Web服務獲取數據
- 27. 從android上獲取服務數據
- 28. 無法從RIA服務獲取數據
- 29. 角從服務器獲取數據MVC
- 30. 從共享服務獲取數據angular2