StrictModeDiskReadViolation cuando

Estoy intentando utilizar SharedPreferences para almacenar algunas configuraciones de usuario para mi aplicación. Tengo este código en mi método de Activity.onCreate:

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

Pero me da este error (es el getBoolean que genera el error):

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

Y el resultado es que el valor no se lee y también obtengo el mismo error cuando intento escribir en SharedPreferences con este código (es el commit que genera el error):

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

Las únicas respuestas para este error que puedo encontrar es acerca de una advertencia de modo estricto, pero mi código realmente no puede leer / escribir los datos SharedPreferences clave / valor.

Debe hacer las operaciones del sistema de archivos en un hilo separado, entonces el error desaparecerá.

También puede desactivar el StrictMode (pero no estoy recomendando que)

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

Si tiene reactivo (RxJava) configurado en su proyecto de Android, puede aprovechar sus propiedades como programar una tarea en un programador específico de E / S, por ejemplo:

 public void saveFavorites(List<String> favorites) { Schedulers.io().createWorker().schedule(() -> { SharedPreferences.Editor editor = mSharedPreferences.edit(); Gson gson = new Gson(); String jsonFavorites = gson.toJson(favorites); editor.putString(Constants.FAVORITE, jsonFavorites); editor.apply(); }); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.