我以JSON的形式從服務器獲取數據,並且必須在Listview中顯示。現在我想知道的是,每次從服務器獲取數據並直接顯示在listview中會更好。或者我應該先檢索數據 - >保存在sqlite>然後從那裏填充它..是值得花費額外的努力涉及sqlite在應用程序?什麼是正確方法:Json - > ListView或Json - > Sqlite - > ListView?
回答
如果你從一個RESTful API服務器獲取信息(從它似乎什麼的),你有兩種方法:
如果您的服務器改變了數據經常
- 獲取來自服務器的信息。
- 填充您的列表(不要將其保存在SQlite中)。
如果您的服務器需要一些時間來改變數據
- 從服務器獲得的信息。 (第1次)
- 保存SQLite中
- 填充在一段時間列出
- 一次
- 檢查服務器,如果當前的數據散列有效
- 如果是,什麼都不做
- 如果不是,重新開始這個cicle。
這是我的做法將使。
SQLiteDatabase僅用於存儲數據。如果你不需要在設備上存儲數據,我個人會認爲你應該填充數據。
這是一個意見,而不是一個答案。不是你的錯,首先這是一個糟糕的問題。 – 323go 2014-10-27 13:09:51
如果每次你想,那麼你應該使用SQLite選項去顯示出類似的數據。 SQLite會將數據存儲在本地的設備中,每次你沒有從服務器獲取數據,因此節省了響應時間。
可能有兩個原因去「SQLite的緩存」,但最有可能你想在應用程序的後臺狀態加載數據。假設用戶在加載數據時按下home按鈕。然後,如果您直接在「活動」中執行此操作,那麼當用戶返回到您的應用程序時,他需要等待數據加載。另一方面,您可以將您的加載轉移到服務中,將數據保存到SQLite中,然後在您的活動中從數據庫加載數據。從用戶的角度來看,這會讓您的應用更加快速。但是在開發你的應用程序時你必須處理更多的組件。
正如其他人已經概述的那樣,sqlite可以在你需要時存儲數據,例如,在離線情況下。不過,我不建議將你的JSON數據緩存在sqlite中,因爲你不得不花時間寫存儲層來獲得緩存。我會推薦的是一個庫,它已經爲你緩存了數據,而且你不必關心存儲。 例子:Robospice爲Android(https://github.com/stephanenicolas/robospice/wiki/Starter-guide)
- 1. 如何從JSON製作listview - > Sqlite?
- 2. ListView in <include>
- 3. PHP - > JSON - > iPhone
- 4. EF - > WCF - > JSON
- 5. PostgreSQL JSON函數中的 - >和 - >>有什麼區別?
- 6. jQuery訪問listview-> ul-> li-> span-> img
- 7. 什麼是定義<content>標籤的正確方法?
- 8. >> =是什麼意思?
- 9. Mongo JSON文檔 - > JSON - > BSON
- 10. 什麼是添加<random>頭文件的正確方法?
- 11. 什麼是比較兩對<?,?>的正確方法?
- 12. - >, - > *和。*運算符的正確名稱是什麼?
- 13. 什麼是「 - >」的正確術語,即$ class-> method()
- 14. MS SQL - > ASP.NET - > JSON
- 15. Image-> JSON - >。Net Image
- 16. PHP:什麼是「 - >」和「=>」?
- 17. 什麼是C++ >>>操作
- 18. ListView和ArrayAdapter <String>
- 19. 什麼是(int - > int) - >(int - > int)是什麼意思?
- 20. 爲什麼-1 >> 1是-1?而1 >> 1是0!
- 21. NPE上ArrayList <String> ListView
- 22. HTML(input) - > php-> mysql-> php-> json-> HTML render
- 23. 的Zend $此 - > _ helper-> JSON返回數組,而不是JSON
- 24. 什麼是定義地圖的正確方法<String, ?>方法參數
- 25. JSON - > Android的
- 26. backbone.js json - > template
- 27. NSArray的轉換 - > JSON - >的NSData - > PHP服務器 - > JSON表示
- 28. 在monad的聲明中,lambda表示法「m >> n = m >> = \ _ - > n」的這個方程是什麼?
- 29. CakePHP中的$ this-> request->('put'))方法是做什麼的?
- 30. 爲什麼TakeLast <T>()方法不是在ReplaySubject <T>
如果你想要做緩存,同步,共享,或過濾,使用SQLite。否則,我真的看不到這一點。 – LightYearsBehind 2014-10-27 12:53:42