Aby uzyskać dokładniejszą odpowiedź, umieść tutaj swój kod. W trybie Android pamięć jest ograniczona, więc VM może usunąć dowolny fragment kodu, który wydaje się zbędny.
Zajrzyj do metody cyklu życia aktywności, w szczególności do onResume
i upewnij się, że rozumiesz to doskonale. Tyle razy zdarza się, że aplikacja się zawiesza, tylko dlatego, że nie używa ona prawidłowo metody cyklu życia.
Inną ważną kwestią do rozważenia dla działania jest, bez względu na to, co się stało z danymi trwałości, które aktywność powinna wyświetlić jego interfejs z pewną wartością domyślną. Więc założenie jest takie, , jeśli mam dane, które będę wyświetlać, jeśli nie, naprawdę nie obchodzi mnie. Twój interfejs użytkownika nigdy nie powinien się zawieść z danymi lub bez nich. Możesz użyć String.xml
do przechowywania niektórych wartości domyślnych lub nawet w układach.
jeśli nadal chcesz iść z klasą singleton, co jest całkowicie w porządku, ale upewnij się, że wykonujesz następujące sprawdzanie za każdym razem, gdy próbujesz uzyskać dostęp do singletonu.
if (instance==null)
instance=Singleton.getInstance()
metoda getInstance()
nie tylko powrót bieżące wystąpienie będzie również upewnić się, że
- inicjuje cały obiekt i zmienne
- inne metody singleton jak metody instancji
Do nie ma statycznego dostępu do danych z jednego działania do drugiego. To nie jest dobre dla Androida specjalnie dla problemu typu, z którym teraz się mierzysz, a także nie jest bardzo dobrą praktyką programowania OOP.
SharedPreference to dobry sposób na utrwalanie danych, jeśli spełniają one wymagania klienta.
jeśli chcesz przekazać dane z różnych składników systemu Android, takich jak Aktywność, Usługa lub Transmisja, możesz umieścić je w pakiecie i wysłać jako zamiar. I, jak zawsze są SQLLite ich przechowywanie danych, plik IO itp itd
Zobacz http://developer.android. com/reference/android/app/Activity.html # onSaveInstanceState (android.os.Bundle) –