Mam klasę danych Singleton, której używam do przechowywania danych. Mam dostęp do niego w różnych Fragment
s.OnSaveInstanceState z Singleton
Po załadowaniu pierwszego Fragment
, nie ma problemu, że wszystkie pola w Singletonie są null
. Po wyświetleniu drugiego Fragment
, zależy to od tych pól, aby wyświetlić swoje dane. Pierwszy Fragment
zapewnia inicjalizację tych pól.
Jednak, gdy użytkownik naciśnie przycisk home w drugim Fragment
i otwiera go ponownie po jak godzinę lub tak, to Singleton traci wszystkie swoje dane, a Fragment
próbuje uzyskać dostęp null
pól.
Chciałem wdrożyć metodę onSaveInstanceState
, ale jestem zaskoczony, jak to działa - nie mam instancji danych, aby ją przypisać.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("DATA", Data.getInstance());
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
savedInstanceState.getSerializable("DATA"); //What to do with this?
}
Każda pomoc jest mile widziane.
Ale nie jestem pewien, czy rozumiem, dlaczego singleton straciłby wszystkie swoje dane? Aplikacja nadal działa w tle, prawda? Używam tego samego paradygmatu w mojej aplikacji i nie widziałem utraty danych. – Aviral
Mam ten problem, więc myślę, że tak. – nhaarman
Interesujące! Jeśli masz pojęcie, co powoduje zniknięcie danych w singletonie, opublikuj. To mnie niepokoi. Dzięki. – Aviral