30

因此,在觀看關於這個話題的非常熟悉的視頻之後,我決定採用設計模式B.使用帶servicehelper的內容提供者。谷歌IO休息設計模式,成品ContentProvider和現在卡住

google design pattern on rest

Basicly我有以下文件:

  • MYPROVIDER
  • MYDATABASE
  • Mycontract

在活動中我現在可以得到ContentResolver的並查詢供應商。到目前爲止,所有工作都很好。

現在我需要同步我的contentprovider從我的REST API中獲取數據。因此,我需要實現一個服務幫助器服務和Rest方法。 研究谷歌IO應用程序幫助了我很多,即時新手與Android,所以它仍然很難弄清楚。

我看到谷歌使用RemoteHandlers處理外部數據,我猜他們是圖中的處理器類?

我不明白的是我如何實現servicehelper + service部分來從網絡獲取數據。

  • 我在哪裏打電話給服務助手?
  • 服務和幫手需要做什麼?
  • 有沒有這個確切的設計模式的任何很好的例子?

我已經閱讀了關於這個堆棧的幾個主題,所有提示不同的方法。我發現了一個例子,它聲明瞭一個restprovider,然後myProvider必須擴展該提供程序。我不喜歡這些解決方案,並希望遵循這種結構化設計模式。我希望你們能幫助我!

編輯:項目源可用:https://github.com/samvdb/TracknTrace

+0

您是否有鏈接到您參考的Google IO視頻? – 2012-02-05 23:46:05

+0

我認爲你可以在這個項目中找到你所有的答案:https://github.com/necronet/Eli-G 它已在[這個SO帖子]中詳細說明(http://stackoverflow.com/questions/ 4948152 /需要樣品,Android的休息客戶端項目,其中,農具 - 維吉爾 - dobjanschi休息)。 – Zakaria 2012-02-05 23:52:26

+2

你好Zakaria,我在一週前發現了這個例子,但是它對這種模式的執行很骯髒。它創建另一個ContentProvider來處理REST而不是服務。感謝您的回覆,但我正在尋找圖片中描述的模式的完整實現。 @John http://www.youtube.com/watch?v=xHXn3Kg2IQE – Sam 2012-02-06 08:10:21

回答

20

在我的理解的模式是:

  • 不顯示一個空的活動,並在後臺加載內容。加載失敗時,您無法顯示任何內容。
  • 通過內容提供商和適配器存儲在數據庫訪問而是顯示數據 - 這保證了用戶總能看到內容
  • 在後臺獲取新的數據,一旦數據是手機的活動自動更新通過適配器

您的問題(我改變了順序):

我在哪裏可以致電服務幫手?
我從Vigils談話中選擇模式A.在這種情況下,通話取決於您的應用程序。您可以在應用程序啓動時,創建活動時或用戶選擇更新按鈕時觸發更新。我會選擇創建活動。

您選擇了模式B.在這種情況下,顯然內容提供者必須觸發更新。什麼時候?獲取新數據:在創建時或在第一次讀取訪問之後。我會使用創建時間。用於在您的內容提供商的相應操作之後創建,更新和刪除。

這個確切的設計模式有什麼好的例子嗎?
從我的帖子https://stackoverflow.com/a/8693919/734687:我知道的唯一開源參考實現可在http://datadroid.foxykeep.com下獲得。這是一個你可以在自己的應用程序中使用的庫。該體系結構在/演示文稿中進行了解釋 - 確保您閱讀它。

服務助手需要做什麼?
如果你看幻燈片19的slides,它是一個單例,它將對服務的調用進行封裝並通過請求ID處理異步調用。

該服務需要做什麼準確?
服務(演示文稿中的幻燈片17)只是確保該操作在後臺執行。

+0

Datadroid聲稱是選項A的實現,而不是選項B.是否錯誤? – Estel 2012-09-19 17:39:32

+0

@Estel是的你是對的。這是選項A的實現 – Foxykeep 2013-01-10 04:56:57