2013-12-09 100 views
1

在多用戶Android應用程序中存儲用戶設置的最佳方式是什麼?在Android多用戶應用程序中存儲設置

現在我使用

SharedPreferences sharedPref = PreferenceManager 
.getDefaultSharedPreferences(getActivity().getBaseContext()); 
String uid = sharedPref.getString("prompt-on-close", "N/A"); 

我認爲這不會對我的工作,因爲這將意味着,所有用戶都共享相同的設置(如果用戶退出,另一個標誌中的值保持相同)。

我發現了一個選擇:

SharedPreferences sharedPref = getActivity().getSharedPreferences("user1", Context.MODE_PRIVATE); 

我仍然不知道這是prefarable解決方案,更重要的是,如果標準Prefrences的對話框可以USET它。我認爲它只使用默認設置。

+0

更好地使用sqlite databse ... –

+0

如果有大量的設置,你最好使用SQLite。你可以嘗試像GreenDAO這樣的事情,如果你想有效的抓取;) –

+0

任何強制首選項對話框來存儲SQLite數據的方法? –

回答

0

您可以使用SQLlite來解決這個問題,你可以在每個用戶創建時爲每個用戶創建行並隨時更新數據,當我需要爲多用戶應用程序存儲大量的偏好時,我通常會使用這種方法 和這個問題在這裏解決疑問在你的問題在關於PreferenceActivity的評論Is it Possible to Use PreferenceActivity with SQLite instead of res/xml?

+1

好吧,假設這是一個小的應用程序,只有少數設置和兩個不同的用戶將使用同一設備上的機會是相當small..what這一點:「pref_user1_prompt_on_close」,「pref_user2_prompt_on_close」 ....如果我動態構建密鑰,可能會起作用,您的想法是什麼? –

+1

這是它的解決方案,您可以隨時根據用戶名動態添加首選項。我們可以通過使用該方法來消除數據庫的使用(將其視爲小應用程序) – insomniac

+0

哦,我忘記了,我在xml中定義了偏好活動,所以這些鍵是靜態的。是否有可能通過編程方式定義密鑰,以便我可以使它們變爲動態? –

0

你在一個正確的方向,在我看來想到的最好辦法遵循以下步驟==>

初始化

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode 
Editor editor = pref.edit(); 

存儲數據

// returns stored preference value 
// If value is not present return second param value - In this case null 
pref.getString("key_name", null); // getting String 
pref.getInt("key_name", null); // getting Integer 
pref.getFloat("key_name", null); // getting Float 
pref.getLong("key_name", null); // getting Long 
pref.getBoolean("key_name", null); // getting boolean 

清除/刪除數據 如果你想從共享偏好中刪除你可以調用remove(「key_name」)來刪除該特定值。如果你想刪除所有數據,調用clear()

editor.remove("name"); // will delete key name 
editor.remove("email"); // will delete key email 

editor.commit(); // commit changes 

下面將從共享偏好

editor.clear(); 
editor.commit(); // commit changes 

編輯==>清除所有數據

Editor e = this.getPreferences(Context.MODE_PRIVATE).edit(); 
e.putString("password", mPassword); 
e.commit(); 
+0

對不起,你誤會我的問題 –

相關問題