Różnica między zatwierdzeniem a zastosowaniem w Android SharedPreferences [duplikat]
To pytanie ma już odpowiedź tutaj:
Jaka jest różnica między zatwierdzeniem () a zastosowaniem () we Wspólnych preferencjach 7 odpowiedziSharedPreferences służą do zapisywania danych aplikacji w systemie Android.
commit()
iapply()
oba służą do zapisywania zmian we wspólnych preferencjach.
Jak wspomniano w Bibliotece Androida:
public abstarct void apply():
W przeciwieństwie do commit (), który synchronicznie zapisuje swoje preferencje w trwałym magazynie, Apply () natychmiast zatwierdza zmiany w SharedPreferences w pamięci, ale uruchamia asynchroniczne zatwierdzanie na dysku i nie zostaniesz powiadomiony o żadnych awariach. Jeśli inny edytor w tej opcji SharedPreferences wykonuje zwykłe zatwierdzenie (), podczas gdy funkcja apply () jest nadal zaległa, zatwierdzenie () będzie blokować do momentu zakończenia wszystkich zatwierdzeń asynchronicznych, a także samego zatwierdzenia.
public abstract boolean commit ():
Zatwierdź swoje preferencje z powrotem z tego edytora do obiektu SharedPreferences, który edytuje. To atomowo wykonuje żądane modyfikacje, zastępując wszystko, co aktualnie znajduje się w SharedPreferences.
Czy oznacza to, że zmiany wprowadzone przezcommit()
są natychmiastowe w porównaniu zapply()
? Który jest lepszy
Jeśli muszę użyć tej samej wspólnej wartości preferencji w następnej natychmiastowej czynności, której z nich powinienem użyć? Jak zauważyłem, jeśli wartość Preferencji jest aktualizowana, nie jest ona odzwierciedlana do momentu ponownego uruchomienia aplikacji.