2015-05-21 41 views
1

在版本1中說,我沒有這個SharedPreference值。 現在,我手動將APK更新至版本2.之後,我重新啓動手機。但是,當我adb拉動創建的.xml文件時,它被設置爲false。默認SharedPreference值被奇怪地設置

SharedPreference如下:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    boolean optimus = prefs.getBoolean("prime", true); 

我想getBoolean套價值,因爲它不存在默認值(不這是第一次它被初始化。)。

這個xml文件是全新的,它以前不存在。

爲什麼會發生這種情況?是否有一些我錯過的原生Android行爲?

回答

0

getBoolean(key, defaultValue)返回defaultValue編程的時候,如果有此鍵在XML文件中沒有值執行該Java語句,所以你不會找到的默認值,你在談論的XML文件中,除非你叫prefs.edit().putBoolean(key, myValue).apply()

編輯:換句話說,prefs.getBoolean("prime", true)總是返回true除非你曾經被稱爲prefs.edit().putBoolean("prime", false).apply()在任何時間點(從時間你安裝的應用程序的第一個版本,並假設你永遠不卸載它或清除數據)。

+0

那麼,什麼是參數值設置爲當我使用這個布爾:說 如果(擎天柱==真) 的run() 不會執行的run(),對不對? – JavaChipMocha

+0

檢查我編輯的答案。爲了回答評論中的問題,可以簡化爲「if(optimus)」爲真,並且「run()」將被正常執行的if(optimus == true)共享首選項並將「prime」明確設置爲「false」。 – Karim

0

如果您更新應用程序(無需先卸載),它將保留在先前版本中設置的首選項。因此,如果"prime"之前在舊版本中設置爲false,那麼在新版本中它將仍然是false,除非在安裝新版本之前先卸載舊版本。卸載將刪除舊的首選項xml文件。

此外,重新啓動手機並不會清除首選項。