StrictModeDiskReadViolation wenn

Ich versuche, SharedPreferences zu verwenden, um einige Benutzereinstellungen für meine App zu speichern. Ich habe diesen Code in meiner Activity.onCreate-Methode:

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

Aber es gibt mir diesen Fehler (es ist der getBoolean, der den Fehler erzeugt):

  • Aktualisieren von Android SDK: "Ein Ordner konnte nicht verschoben werden."
  • FindViewById Rückgabe null in Fragment
  • Ist es möglich, diese Ordner an einem anderen Ort zuzuordnen?
  • Mockito verspottet den aktuellen Android-Code in Lollipop oder höher
  • Wie füge ich einen Eintrag in den Android Kalender von einer html5 mobilen Webseite hinzu?
  • Gridview mit zwei Spalten und automatisch verkleinerten Bildern
  •  11-10 16:32:24.652: D/StrictMode(706): StrictMode policy violation; ~duration=229 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2079 violation=2 

    Und das Ergebnis ist, dass der Wert nicht gelesen wird und ich bekomme auch den gleichen Fehler, wenn ich versuche, die SharedPreferences mit diesem Code zu schreiben (es ist die Commit, die den Fehler erzeugt):

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

    Die einzige Antwort für diesen Fehler, den ich finden kann, ist über eine strenge Moduswarnung, aber mein Code schlägt wirklich nicht die Schreibweise der SharedPreferences Schlüssel / Wertdaten ein.

  • Erweiterte Erläuterung der Android-Layout-Eigenschaften?
  • IllegalArgumentException: pointerIndex außerhalb des Bereichs von SwipeRefreshLayout
  • Android-Fragment zeigen als Dialogfragment oder übliches Fragment
  • Native Stack Trace auf ICS?
  • Gekrümmte Rechteckform android
  • CSS3 linear-gradient funktioniert nicht auf android.
  • 2 Solutions collect form web for “StrictModeDiskReadViolation wenn”

    Sie müssen fileSystem-Operationen auf einem separaten Thread machen, dann wird der Fehler weggehen.

    Du kannst auch den StrictMode ausschalten (aber ich empfehle das nicht)

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

    Wenn Sie reaktive (RxJava) in Ihrem Android-Projekt konfiguriert haben, können Sie die Vorteile seiner Eigenschaften wie planen eine Aufgabe auf einem I / O-spezifischen Scheduler, zum Beispiel:

     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(); }); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.