2011-06-28 52 views
3

我正在使用共享偏好設置來存儲我的應用程序的登錄憑據。除了一個用戶以外,一切正常。經過一段時間後,共享偏好似乎會以某種方式重置或清除。我已經爲該用戶調整了我的應用,以便永遠不再清除他的共享偏好。這樣我可以肯定,這不是我的應用程序的錯誤。但即使在此修改之後,他的憑證也會被清除,所以我懷疑其他設備正在進行其他操作。共享偏好不斷消失

對於如何解決這個問題,你們有沒有建議?我一直在考慮創建另一個應用程序來設置一個fileobserver來監視首選項文件。這樣我希望看到文件何時被清除/刪除。也許有應用程序誰可以做到這一點?我甚至願意讓偏好文件可用於其他應用程序進行檢查。有什麼方法可以診斷這個問題嗎?我敢肯定,這不是我的應用程序進行清除/重置...

感謝您的任何幫助,你可以給。

回答

-1

您只有一個有此問題的用戶?你有多少用戶?至少100?如果是這可能是一個糟糕的設備。不要浪費時間追逐它。

+0

那麼,一個用戶是我的老闆:-),這個應用程序可能會推出給成千上萬的用戶。目前我正在測試,這是我無法解決的一個問題,我想知道它來自哪裏。到目前爲止,我已經測試了大約6臺設備。 – Ivo

+0

哦,這很不幸。在他的設備上安裝市場上的任何應用程序並保存偏好設置。如果他們工作,問題是你的應用程序。我假設你打電話給editor.commit()? –

+0

他說,其他應用程序正常工作:-(我使用此代碼:( 「PREF_USR」,mUsername.getText()的toString()) getSharedPreferences( 「SPrefs」,0) .edit() .putString .putString( 「PREF_PWD」,mPassword.getText()的toString()) .putBoolean( 「PREF_SAVED」,真) .commit(); 在此之後我從來沒有呼籲喜好清楚了,但他們消失... – Ivo

2

有幾件事要考慮。首先,如果可以,只需使用數據庫,因爲它們更可靠。其次,不要跨進程使用SharedPreferences對象,這可能不適用於這種情況。第三,在閱讀SharedPreferences時,你必須在編寫它們時使用相同的預防措施。使用一個SharedPreference對象和一個Editor對象。將SharedPreferences對象傳遞給您的方法和類,您不必重用該編輯器。在過去,我有一天有用戶抱怨SharedPreferences被刪除,但是一旦我實現了這些邏輯步驟中的一部分,我的用戶就不再煩我了。記住,就像你說的那樣,這很少見。 1500用戶中的1個是微不足道的百分比,但即使是單個用戶也可以留下不好的評論:-)