2012-01-06 28 views
2

我在撰寫社交網絡android應用程序。我已經在Microsoft Azure上創建了一個帶有數據庫的.Net webservice,並計劃調用該Web服務從雲端獲取數據並將其顯示給用戶。與Facebook類似。使用Android從雲端檢索數據

現在,我有兩種方法,我不知道要實施哪一種。方法如下:

  1. 「每次活動加載時,調用Web服務並重新加載所有數據。」這當然是最簡單的方法,但它是正確的嗎?我的意思是,我有大約30個活動,其中一半負載數據,而另一半負責數據。據我所見,這種方法可能會成爲一個問題,因爲它可能會降低應用程序的速度。它也可以通過這麼多的請求來增加我的雲賬單。而且我不知道每次刷新是否正確。
  2. 「調用Web服務,每10分鐘,所有的數據存儲在SQLite數據庫,且僅當它已經超過10分鐘,或者甚至可能有一個刷新按鈕更新數據。」這種方法可能是更好的方法,但我不確定是否值得編寫這麼多的代碼。

我需要你的意見在決定正確的技術。數字2看起來不錯,但如果有什麼我不知道的東西,並且我沒有理由寫了所有額外的代碼。

請幫我看看這裏。如果還有更好的方法,請告訴我。

+0

提供的功能和數據的詳細信息,如果您想更準確的答案 – zode64 2012-01-06 21:42:30

+1

whatsthebeef是正確的,就像你說的第一個解決方案是非常往往容易因此它也取決於你有你的第一個實施 – kingston 2012-01-06 21:46:42

+0

預算非常好的一點,複雜性是一個考慮因素 – zode64 2012-01-06 21:52:19

回答

1

這真的取決於數據的排序,需要什麼樣的延遲對數據和數據的數量。此外,項目的規模和從實施中獲得的收益將作爲複雜性增加。更準確的答案提供更多信息。

在這種情況下,本地緩存可能是一個非常好的主意。這是相當普遍的做法,可以使用多種機制。根據從Web服務中檢索數據的格式,你可以在一個

  1. 數據庫存儲,當數據需要處理(檢索,查詢等),或者是有大量的數據。

  2. 文件(一個或多個),如果使用的格式化數據如XML或JSON,你可以保持該結構的工作有時是有用的。您可以使用native android caching來協助管理存儲。

  3. 首選項,當數據的簡單類型(和字符串),並沒有太多的它。

本地緩存將降低帶寬消耗(將最終節省了用戶的錢是永遠流行的),如果正確實施的內存和處理消耗。可能最重要的是(取決於數據),它可以允許在用戶沒有連接時有效使用應用程序。

順便說30個活動聽起來好像很多,你真的應該考慮減少通過跨活動共享功能,這應該提高導航,代碼體積和內存佔用。

UPDATE從評論

從有限的資料你的項目,你不想在文件被緩存完整的SOAP消息我會建議使用數據庫作爲數據存儲(如果有的話),並且數量超過40+的記錄可能使優先存儲難以管理。

但是,正如我前面提到的,你需要考慮的複雜性。在使用數據庫時,您必須創建一個構建方法(可能是某種ORM),將其與您對SOAP對象的反序列化分開,因爲從技術上講,您將分離持久數據格式。

我不能得到一個明確的答案,因爲還有非常有限的信息,但你需要評估加入這樣的功能,你的項目,你將得到的好處的成本。

我一些其他的東西值得考慮這種高速緩存的時候提。

  • 如何管理緩存,它的大小和數據完整性。
  • 你什麼時候緩存,只要你有反序列化的SOAP對象?當你完成數據?等等。
  • 如何決定何時使用緩存以及何時訪問網絡?
+0

數據將以SOAP格式接收。數據並不複雜,由字符串,整數和布爾值組成。另外,我只打算檢索最新的40條記錄,因爲數據庫可以有100個,甚至數千個。 – harsimranb 2012-01-07 03:05:50

+0

至於30項活動,我遇到了這個:http://stackoverflow.com/a/6236518/487940,並有一個印象,30不會太多。目前,我正在修改UI,並嘗試使用Tabs來減少活動數量。 – harsimranb 2012-01-07 03:10:23