5

Wiem, że Bundle może być używany do przekazywania danych między działaniami, a także do zapisywania i przywracania danych w przypadku zmian konfiguracji, takich jak obrót ekranu.Jak długo trwa pakiet?

Przeczytałem także, że preferowanym sposobem przechowywania trwałych danych jest SharedPreferences, a nie Bundle.

Dlaczego tak właściwie jest? Aby zmiana konfiguracji była możliwa przez Bundle, musiałaby się ona utrzymywać nawet po zniszczeniu działania. Czym dokładnie jest długość życia Bundle? Czy istnieje pewien punkt, w którym arbitralnie zostanie wyeliminowany przez odśmiecanie, czy dane są przechowywane przez okres Bundle tak długo, jak długo nie zostaną ręcznie usunięte?

Odpowiedz

1

Bundle trwa, gdy działanie istnieje, również nie zostało ukończone.

Ciekawostką zauważyć, że gdy proces śmierć występuje i Android masakruje swoją aplikację i klasy aplikacji jest odtworzony (onCreate() nazywa), a następnie stos aktywny jest rekonstruowana, a aktywność jest ponownie inicjowane z saveInstanceState wiązce .

Zapisuje dane podane przez Ciebie w pliku XML w folderze data/<applicationname>/preferences, jeśli dobrze pamiętam lokalizację.

+0

Kiedy uznaje się za zakończoną aktywność? Wiem, że nie jest, gdy działalność jest zniszczona. Wydaje się również, że gdy użytkownik naciśnie przycisk, aby zamknąć aplikację, pakiet zostanie zresetowany? Czy można zatem powiedzieć, że działanie zostało zakończone, gdy użytkownik ręcznie zamknie aplikację? – ryye

+0

Aktywność ** została zakończona **, jeśli albo wymusisz zatrzymanie aplikacji, albo użytkownik naciśnie przycisk 'Back', a działanie' onBackPressed() 'wywoła metodę' finish() '. Możesz uzyskać dostęp do tego, czy działanie kończy się metodami 'onPause()', 'onStop()', 'onDestroy()', używając metody 'isFinishing()'. – EpicPandaForce

2

służą do przechowywania zwykłych ustawień trwałych. Podobnie jak strona główna w przeglądarce, która powinna być dostępna za każdym razem, gdy użytkownik otworzy aplikację. Są to po prostu kluczowe: pary wartości zaprojektowane do przechowywania prostych rzeczy.

Bundle to sposób przechowywania danych do przekazania do innego kontekstu (inna aktywność, usługa itp.) Lub do zapisania i przywrócenia własnego stanu bieżącego w stanie onSaveInstanceState i onRestoreInstance. Te dane są trwałe i używane, gdy aplikacja jest w użyciu.

+1

Ale jeśli pakiet można użyć do przywrócenia podczas onRestoreInstance, musi przetrwać poza onDestroy, prawda? Czy zatem dane nie będą uznawane za trwałe? – ryye

+0

Tak długo, jak aplikacja jest uruchomiona. Po zniszczeniu aplikacji są to dane pakietu. – Shahzeb

Powiązane problemy