2012-11-30 47 views
0

我期待實現Google IO休息結構部分A-使用服務API。所以我已經確定了結構的以下部分。谷歌IO 2010休息結構

  1. 提供休息方法的接口。
  2. 實現上述接口的處理器類。會有 多處理器類。每個處理器類將返回一個 類的類型。
  3. 服務提供商,處理單個處理器。從處理器返回的數據 由服務提供商處理。這個 將調用處理函數,並獲得返回的數據。
  4. 作爲服務類的SerivceProcessor。應用程序中將有一個 單個類。這將根據傳遞給它的Bundle數據與各種SericeProvides進行通信。
  5. 服務助手,提供了 活動和服務

現在我不清楚這裏之間的高度集成。該服務具有已請求的數據。如何進一步處理。我如何將數據從服務傳遞迴ServicHelper。把它放在一個標籤爲BUNDLE_EXTRA的Bundle中?爲此,我的pojo必須是Serializable或Parceable。我知道Serializable在Android平臺上是一個非常糟糕的選擇。他們還有什麼其他的選擇。我會使用廣播意圖嗎?

感謝您的任何幫助。

回答

4

你可以做幾件事情。

  • 通過intents(讓它實現廣播接收器)通知服務助手。這可能是一個糟糕的主意,因爲只需一個休息電話就可以獲得很多行。在這種情況下,您應該實施某種設施,將您的pojos放入您要發回的意圖中(如fillIntent/getFromIntent方法)

  • 在服務提供者內部,將結果數據存儲在某處(sqllite,contentprovider,file ),只是拋出一個廣播意圖,其中將只包含requestId和您的調用結果。 服務助手攔截廣播並通知任何感興趣的活動請求已完成。該活動根據此更新ui。在這種情況下,servicehelper僅用於跟蹤正在進行的請求/通知結果。

在我看來這種做法是更好,因爲你保持用戶界面和模型分開,並且不要求對活動的數據存儲,這是更「休息爲本」。

加:前段時間我試圖實現這種方法。它沒有完成,但你可以在這裏檢查服務助手和請求/結果意圖postman lib

一個更成熟和更強大的庫是robospice,這是我現在將使用,如果我不得不處理其餘服務。