Android - Shared Preferences are lost sometimes

Amit Moran picture Amit Moran · Oct 30, 2011 · Viewed 19.6k times · Source

Some of the users of my application complain that sometimes (in a random way) the settings of my application are getting reverted to their default state (usually after a reboot of the phone). I never managed to reproduce the problem though. I am thinking it is due to the fact that in many places in my app I have a piece of code that calls the shared preferences editor and commits changes - Can it resolves in corrupting the shared preference file if I try to commit several changes to the same preference file at the same time? (Multi-thread application)

I am really lost. I tried to look in the web for hours to find a solution without a success.

If anyone has even an idea so I can start investigating, I would be grateful.

Thanks, Amit Moran

Answer

user834595 picture user834595 · Oct 30, 2011

I'd echo the other answers - that you need to avoid conflicts if you don't want to corrupt the file - and I'd go further to suggest that you're probably misuing SharedPreferences.

SPs are designed to store small pieces of information about your app - user settings like volume or whether music is playing or things like that.

SPs are NOT designed for storing data which changes often and/or large amounts of data and it's a bad idea to try to do this (for the reasons you've discovered and a few others).

Remember that SPs are really just an XML file - you're incurring the overhead of parsing and recreating that every time you change it too!

The idea of an App which updates SPs in more than one thread is a bit mad I think - you need a better way of managing and storing the data you're saving - it will pay-off for you in more than one way...