2016-02-23 150 views
1

我在寫一個針對SDK21的Android應用程序。目前我需要粘貼一些邏輯塊,我似乎無法找到一種方法來實現它。該應用程序有多個活動和兩個Services在後臺運行,其中一個導出。Android服務 - 服務和服務 - 活動雙向通信

邏輯流應該如下:

  1. 本地服務偵聽藍牙連接。連接建立後,每個傳入消息都打包到一個對象中。對方的另一方正在等待答覆。
  2. 對於每個傳入消息,創建的對象需要發送到導出的服務,最終將回復。
  3. 導出的服務需要啓動一個活動(編輯:包含在我的應用程序中)並等待用戶執行操作。根據動作的結果,服務會生成一個回覆並將其發送回本地服務(在所有可能的情況下會生成一個回覆),然後應該將其發送(以byte []格式)回另一個派對。

本地服務< --->導出服務< --->活動

假設,這樣做是可能的,我應該怎麼處理它?

+0

爲什麼你有2個服務? – Gavriel

+0

因爲任何應用程序都可以使用它,而且只針對我的應用程序的工作方式以及它如何使用導出的服務。 –

+0

因此,我可以編寫一個使用您的導出服務的應用程序?那麼如何解決這個問題呢?它會打開我的應用程序的活動? – Gavriel

回答

0

嘗試這種情況:

  1. 創建的PendingIntent,以這樣的方式製備,它可以用來發送回在結束的響應(使用本地服務(或「其它應用」)直接類,所以響應僅由接收者接收,無需對其進行廣播)

  2. 該消息對象和的PendingIntent以捆綁發送到出口活性

  3. 活性詢問用戶,並取決於e用戶交互它將消息+交互+ PendingIntent發送到服務。這是必需的,因爲它可以很容易地將用戶交互發送到服務。

  4. 服務做了計算,並準備響應

  5. 服務發送回使用的PendingIntent響應

你也可以這樣做:

2B。客戶端發送PendingIntent和消息給出口服務,

3b。導出服務開始活動

4b。活動向導出的服務發送另一個意圖,包括消息+用戶的選擇

5b。出口服務準備迴應

6b。導出的服務使用PendingIntent發回Bundle中的響應