2017-05-29 142 views
1

我的Android應用程序正在從網絡(node.js服務器)獲取數據。Android:是否在本地存儲數據?

用戶創建一個項目列表(通常爲20-30,但可以達到60+)。對於每個項目,我都會查詢服務器以獲取此項目的信息。一旦這個信息被提取(每個項目),它不會改變,但隨着時間的推移新的記錄將被添加(另一個服務器調用與前一個不相關)。

我的問題是關於在本地存儲此信息(sqlite?)還是每次用戶請求時從服務器獲取此信息(我會提醒您電話的數量)。

除了「速度」之外,我的指導原則應該是保存在本地嗎?

回答

1

如果你的物品不變,你應該堅持他們在本地充當緩存。儘管數據那下跪是非常大的,用戶會歡迎它,因爲你的應用程序將需要更少的互聯網使用,這可能導致長時間的等待,超時等

你可以利用Retrofit調用Web服務。

當涉及到在Android應用程序中本地保存數據時,可以用多種方式存儲它。

首先,最簡單的是使用共享首選項。這次我不會建議你,因爲你正在使用一些對象。

第二個是使用原始SQLite數據庫。

但是,我會避免進行SQL查詢,並嘗試ORM框架。在Android中,您可以找到幾個,例如GreenDAOORMLite等等。這是你應該選擇的選擇。相信我,最初你會發現ORM很難理解,但是當你瞭解他們如何工作以及他們給我們帶來的好處時,你會愛上他們的。

+1

我寧願依賴於儘可能少的「插件」。因此,如果我理解正確地存儲本地信息,即使用於緩存目的也是推薦的。 – Amos

+0

是的,建議。它們不是插件,有一些庫可以增強核心的android。另外,它們被其他應用程序廣泛使用。 – russellhoff

1

您應該閱讀有關「首先脫機」的原則。

總而言之,移動用戶並不總是有穩定的網絡連接(甚至根本沒有連接),並且您的應用程序的使用不應該依賴於全時的互聯網訪問。

您應該決定哪些數據適合脫機存儲。 它主要取決於用戶最經常訪問的內容。

+0

這意味着所有的數據應該始終保存在本地。我不確定這是一種好的做法還是我錯過了一些東西? – Amos

+0

您可以決定哪些數據可以用於脫機使用或不使用。 –

+0

這確實是一個很好的做法。這個問題將決定如何將本地數據與Web服務同步,但正如您告訴我們的那樣,項目不會發生變化,非常簡單。 – russellhoff