2012-03-06 42 views
10

我知道這個話題已經在Stack Overflow上討論過了。但是當我閱讀以前的文章時,仍然有一些不清楚的地方。所以,在這裏,他們是:共享首選項和sqlite的區別

  • 我知道,我們使用共享偏愛小型數據集和SQLite,大數據處理,所以如果我們只是想保存用戶名和密碼,我們應該使用共享偏好?
  • 用戶卸載應用程序時,共享偏好設置是否會丟失?例如,我下載一個名爲abc的應用程序並保存我的用戶名和密碼。然後我從一部手機上卸載這個應用程序,並嘗試使用相同的用戶名和密碼從其他手機訪問它。這是使用共享偏好保存還是數據丟失?
  • 除了大小數據集之外,我們使用其中一個的主要原因是什麼?
+0

我也有問題!我想存儲一些字符串和整數數據,用戶填寫它們(我想存儲無限項目編號)。請幫助我哪個更適合這種情況?謝謝! – 2015-03-08 11:05:27

回答

18

你可以認爲在數據大小方面共享偏好和SQLite數據庫之間的差別,但不是完全準確。更好的方式來考慮它是根據您要存儲的數據的結構。

共享偏好只能存儲鍵 - 值配對,而SQLite數據庫要靈活得多。因此,共享偏好對於存儲用戶偏好特別有用,例如,應該顯示通知等應用程序。而SQLite數據庫幾乎可以用於任何事情。

兩個數據源是本地的,但你應該知道的是能夠備份你的應用程序數據,雲存儲鏈接到用戶的谷歌賬戶。這使您的用戶更容易更換設備並使其應用輕鬆轉移到新設備。欲瞭解更多信息,請看看here。僅

1

兩個存儲數據在本地,所以卸載應用程序將同時刪除。除此之外,SharedPreferences更容易編程,並且您對數據量是正確的。

+0

所以即使使用sqlite我也不能保存數據?那麼你如何保存數據?如果您無法保存或檢索用戶名和密碼,那麼使用這些內容有什麼意義? – NoviceMe 2012-03-06 19:51:26

+0

只要用戶不刪除應用程序,您就可以保存數據。如果您希望數據在用戶刪除並重新安裝應用程序時保持不變,則需要設置您的網絡服務器。 – 2012-03-06 23:32:49

0

一般來說,如果您希望允許用戶直接操作某些數據字段,則應使用共享首選項。共享偏好基本上是用戶偏好;如果您希望用戶重新配置應用以不同方式運行,則應該將該功能作爲共享首選項公開。另一方面,如果你想限制數據的可見性僅限於應用程序,如果你想更強有力地保證數據是持久的,並且如果你希望應用程序的行爲獨立於SQLite數據庫,那麼應該使用SQLite數據庫存儲在數據庫中。當然,你可以在一個應用程序中使用這兩個。

共享首選項和數據庫是應用程序存儲的本地數據的一部分。如果您卸載應用程序,則兩個數據存儲都將被刪除。

4

在你描述的情況下,你將在兩種情況下丟失用戶名和密碼。數據存儲在手機上,當您卸載應用程序時,某些帶有數據的數據也將丟失。用戶將不得不重新輸入這些信息。

可以保存用戶名和傳球無論是在共享偏好或DB,這是個人喜好。只要確保你鎖定已停機,即不同意你保持在這個信息的數據庫或共享偏好。

至於差異...共享偏好應持有好...共享偏好...這裏有一個例子:

如果我創建一個選項來改變背景顏色,我將存儲在可裝入供用戶選擇適配器視圖中的數據庫中的所有可用的選項。但是我會將他們在共享首選項中選擇的顏色存儲起來。這樣當應用程序加載時,我可以獲得應該使用的背景色的共享偏好值。

3

SharedPreferences用於只是,存儲共享應用程序範圍內的用戶偏好。例如,您可以使用它來存儲用戶的用戶名,也可以使用他或她在您想要記住的應用程序中配置的某些選項。

SQLite是一個關係型數據庫。它用於存儲應用程序的數據,而不是首選項或配置信息。

兩者都存儲在設備上本地。

+0

那麼,即使在用戶卸載應用程序後,我們會如何確保我們擁有用戶名和密碼? – NoviceMe 2012-03-06 20:30:29

+0

使用您的應用程序連接到的網絡服務器並將數據保存在那裏。 – 2012-03-06 23:33:51

2

1.SharedPreferences存儲布爾值,整數,浮點,長字符串5種簡單數據類型,諸如不能是有條件的查詢。所以,SharedPreferences數據存儲操作是多麼簡單,它只能作爲存儲的補充,但不能完全替代其他數據,如SQLite數據庫存儲。基於XML的文件

2.SharedPreferences存儲用於存儲配置信息(主要是用戶的喜好爲您的應用)的鍵值項。

3.Sharedprefrece只是想在網絡cookies其存儲在客戶端的一些基本信息。