2011-04-23 13 views
4

我使用下面的代碼將數據保存到我的Android應用程序的共享偏好:Android的共享偏好的任務不是仿真器會話之間持續存在的

private SharedPreferences getOurSharedPreferences() { 
     return getSharedPreferences(SHARED_PREFS_FILENAME, MODE_PRIVATE); 
    }  

    SharedPreferences sharedPrefs = getOurSharedPreferences(); 
    SharedPreferences.Editor editor = sharedPrefs.edit(); 
    editor.putString(keyName, theString); 
    if (!editor.commit()) 
     throw new RuntimeException("Unable to save new string."); 

    // Get it back as a test. 
    String s2 = getStringFromStorage(keyName); 

凡SHARED_PREFS_FILENAME是私人最後靜態字符串的keyName的名稱是什麼鍵我目前用作字段名稱。該提交工作正常,我沒有得到一個例外。正如你所看到的,我添加了一個檢索最近提交的字符串的測試,並且當我檢查它(s2)時,該值是正確的。所以我在我的應用程序的生命週期中沒有任何共享偏好存儲問題。但是,當我在仿真器中重新啓動應用程序時,共享首選項存儲區爲空,並且找不到存儲在上次模擬器會話中的值。我做了一些閱讀,並且據我所見,存儲的值應該保留在會話中,顯然它們保存在屬於模擬器的XML文件中。但我有問題。

任何人都可以告訴我爲什麼我的共享首選項存儲值不會持續在Android模擬器會話之間嗎?

- roshcler

+0

您是否在與您的代碼相關的堆棧跟蹤中看到任何錯誤或警告? – rajath 2011-04-23 01:50:09

+0

不,我不是。謝謝。 – 2011-04-23 03:52:56

+0

我有同樣的問題,但也在我的設備中測試,我運行我的應用程序,進行一些首選項更改,一切正常,然後停止並重新啓動應用程序,並且更改已經結束! – maid450 2011-04-29 10:32:41

回答

0

在調試配置對話框窗口的目標選項卡,你有「擦除用戶數據」打勾?

+0

這不會刪除應用程序本身嗎? – rajath 2011-04-23 01:48:48

+0

我在問是否打勾,因爲如果是,它會擦除​​所有用戶數據。顯然,他的用戶數據被抹去了,因爲他的代碼看起來很實在。 :) – Dan 2011-04-23 01:49:44

+0

因此,如果勾選了「擦除用戶數據」,那麼即使應用程序已卸載。 – rajath 2011-04-23 01:53:21

0

我有一個類似的問題。嘗試卸載應用程序並重新安裝。在開發時,共享偏好文件中的東西可能會損壞。

重新安裝後,我的問題消失了,我可以看到跨應用程序生命週期的持久值。