Neigaard Neigaard - 1 year ago 159
Android Question

StrictModeDiskReadViolation when

Im new to Android dev, and I am trying to use SharedPreferences to store some user settings for my app. I have this code in my Activity.onCreate method:

sharedPreferences = context.getSharedPreferences("MMPreferences", 0);
soundOn = sharedPreferences.getBoolean("soundOn", true);

but it gives me this error (it is the getBoolean that generates the error):

11-10 16:32:24.652: D/StrictMode(706): StrictMode policy violation; ~duration=229 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2079 violation=2

and the result is that the value is not read and I also get the same error when I try to write to the SharedPreferences with this code (it is the commit that generates the error):

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("soundOn", soundOn);

The only answers for this error I can find is about a strict mode warning, but my code actually fails to read/write the SharedPreferences key/value data. Any idea why?

Thank you


Answer Source

You must do fileSystem operations on a separate thread, then the error will go away.

you can also turn off the StrictMode (but i am not recommending that)

StrictMode.ThreadPolicy old = StrictMode.getThreadPolicy();
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(old)