我正在實現一個android應用程序,我不知道如何解決這個問題:當用戶點擊更新按鈕時,我想連接到我的服務器,並檢查數據是否有任何更新,如果有是,我想從服務器獲取數據並更新數據庫。我是否應該使用xml結構來檢查並從服務器獲取更新,或者是否有更智能的方法來實現這一點?如何從服務器獲取數據並使用它更新數據庫?
4
A
回答
5
是的,有一個更聰明的方法來做到這一點,但它需要在服務器和客戶端的一些工作。這就是它的工作原理:所有數據都應該可以用JSON或XML格式下載(我寧願選擇JSON)。所以,你會在服務器上有這樣的東西:http://example.com/resource.json。爲了知道是否有新版本的數據,你可以做的是向HTTP響應添加一個頭部版本(這樣你就不必下載和解析整個資源,以便知道是否有新版本)。
爲了讓您檢查這些標題,你就會有這樣的事情:
URLConnection urlConnection = null;
try {
urlConnection = url.openConnection();
urlConnection.connect();
String currentVersionHeader = urlConnection.getHeaderField("your-version-header");
if(currentVersionHeader == null) {
currentVersionHeader = "-1";
}
int version = Long.parseLong(currentVersionHeader);
// then you compare with the old version
if(oldVersion < version){
// download the data
}
} catch (Exception e) {}
下載和解析JSON資源是一些已經被處理,你會發現一堆教程和參考在谷歌和這裏。
你沒有提供服務器端的細節(是PHP?Java?.NET?),所以我也不會給你詳細說明如何實現/添加版本頭。我只是根據自己的經驗向你解釋了做這種事情的最好方法是什麼。
相關問題
- 1. Android PushNotification IntentService並調用AsyncTask函數從服務器數據庫獲取數據並更新sqlite數據庫
- 2. 如何從XML中獲取數據並更新數據庫表
- 3. 從數據庫更新數據從數據庫獲取數據
- 4. 當服務器數據庫更新時更新sqlite數據庫
- 5. 從服務器MySql數據庫更新本地服務器MySql數據庫
- 6. 如何使用Python訪問並從數據庫獲取數據?
- 7. Php Web服務。如何從數據庫中獲取數據?
- 8. 提取數據時從服務器獲取數據並刷新UI?
- 9. 如何僅從Firebase數據庫獲取更新的子數據?
- 10. 如何獲取數據從服務器的服務器地址
- 11. 從asynctask服務器獲取JSON並存儲在數據庫中
- 12. Silverlight使用WCF RIA服務從數據庫獲取最新版本的數據
- 13. 從服務器獲取數據,並加載使用Android
- 14. 如何從gcm服務器響應更新數據庫表
- 15. 如何從服務器更新數據庫
- 16. 如何將數據庫數據發送到MySQL服務器以更新服務器數據庫
- 17. 如何使用服務器數據庫?
- 18. 如何自動更新數據庫服務器上的mysql數據庫更改?
- 19. Sencha Touch Sync並從服務器獲取新數據
- 20. 使用JSON xmlHttprequest從Web服務器讀取數據庫並顯示數據?
- 21. 如何從服務器獲取數據,並在sqlite的
- 22. 我如何從Excel中使用SQL服務器獲取數據
- 23. 如何使用NSMutableURLRequest從網絡服務器獲取數據
- 24. 如何使用JSON,JQuery和AJAX從服務器獲取數據?
- 25. 如何從服務器提取數據後更新recyclerview?
- 26. 當我從服務器獲取數據時如何刷新CVCalendar?
- 27. 你將如何處理從服務器獲取新數據?
- 28. 如何更改ListView直接從服務器獲取數據?
- 29. 如何在從服務器獲取數據後更改活動
- 30. iPhone/Sqlite - 如何只從服務器獲取更改的數據?
感謝您的詳細解答。服務器端不是問題,我正在尋找主要想法,我現在得到它。再次感謝。 – dirhem 2010-09-20 22:56:54