2011-04-15 103 views
2

我心裏有這個基本的設計:的Android ---連接活動和服務

  • 主要活動將提供的子活動的選擇,也可以創建一個藍牙服務。
  • 藍牙服務將讀取並從藍牙連接的裝置緩衝的實時數據。足夠快的數據速度(100到1000 sps),以至於我認爲使用Intents或廣播並不現實。

  • 子活動只是以不同的方式顯示相同的接收數據。 每個子活動也會讓用戶以不同的方式與數據交互。

  • 我真的喜歡的藍牙服務無關的活動/查看其上得到的數據呈現。

我願意'註冊'一堆'熟的'數據將被髮送到'一個'目的地'(這將是真正的活動)。我沒有完全知道如何從開始活動中「註冊」任何東西。

如何傳遞,例如,一提到我的服務到每一個這些活動的?或者它可能是相反的;如何將每項活動註冊到正在運行的服務中。

有一個C/C++的背景下,我意識到這可能不是Java中的好方法。 謝謝。

回答

3

理想地,這不是不要接近它的最佳方式。具體來說,android是一個系統,它的服務基於從活動到活動,活動到服務,服務到服務的意圖傳遞信息。

我會接近,這將涉及具有將與服務進行通信在手機上的應用程序的方式。具體來說,該應用程序會收到來自該服務的數據。然而;爲了讓活動能夠聽取它,您可以讓該服務廣播一條消息,說明有新信息,並讓該活動攔截它。當服務構建此消息時,您可以將信息通過意向(額外)傳遞給活動。該活動內部會有一個廣播偵聽器,專門更新該活動內部與該服務相關的信息。

也許從丟失保存信息,扔的消息到堆棧,並閱讀相應直至其空(這是假設你得到大量信息)

這些鏈接應該幫助

廣播Reciever

http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/

服務

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

http://marakana.com/forums/android/examples/60.html

+1

是的,我見過的意圖的額外的可能用途,但它似乎是壓倒性的開銷的東西可能會被調用每秒這麼多的時間。它可能工作,如果我願意犧牲延遲和'一堆更大的樣本數據:(但仍然看起來像很多開銷。 – Rastikan 2011-04-15 18:12:21