2016-08-06 22 views
0

Nun, ich habe zwei Apps.
Erste App besitzt die SharedPreferences, und die App speichert einige Daten durch apply Methode.
Warum gilt SharedPreferences.Editor.apply() nicht sofort?

Und zweite App liest die Einstellungen aus der ersten App, (die erste App speichert Präferenzen mit MODE_WORLD_READABLE) und es konfiguriert sich mit ihnen.

Es war so.

Es gibt einen Präferenzschlüssel "x". Und die beiden Apps liefen zur gleichen Zeit.
Erste App änderte den Wert, der auf "x"
abgestimmt ist und die zweite App hat keine Änderung vorgenommen.
Nach dem Neustart der zweiten App wird die Änderung vorgenommen. Warum passiert dieses Problem?
Muss ich jedes Mal, wenn ich einige Werte aus der ersten App lesen muss, die SharedPreferences Referenz aktualisieren?

+0

Haben Sie mit 'commit()' versucht? – Shaishav

+0

siehe http://stackoverflow.com/questions/5960678/whats-the-difference-between-commit-and-apply-in-shared-preference – sasikumar

+0

Commit funktioniert nicht – ManDongI

Antwort

0

SharedPreferences.apply() erledigt die Arbeit in einem Thread (asynchron), es könnte also etwas dauern. Daher konnte man nach dem zweiten Öffnen die Veränderung sehen. Wenn Sie ein sofortiges Ergebnis wünschen, verwenden Sie stattdessen .commit(). Aber es wird die Arbeit im UI-Thread tun und wird daher nicht empfohlen

+0

Commit hilft mir nicht .. dasselbe Ergebnis! – ManDongI

+0

Können Sie einen Teil Ihres Codes dort veröffentlichen, wo Sie die gemeinsame Einstellung lesen und aktualisieren? – DarkCoderRises