Mam aplikację z dużą ilością aktywności. Wśród nich jest InitialActivity
, który ładuje dane podstawowe. Jest to działanie programu uruchamiającego i żadne z następnych działań nie może istnieć bez załadowanych danych.Wyczyść stos ponownie, gdy obiekt aplikacji zostanie zabity przez system
więc uruchomić aplikacji, InitialActivity
jest ładowanie danych, a następnie przechodzi do MainActivity
a potem mam przeglądania pewnym FarAwayActivity
. Potem przełączam się na inne aplikacje (niektóre z nich to ciężkie gry), a moja aplikacja ginie w tle. Włączyłem wywołanie dziennika w moim Application.onCreate()
i widzę, że jest ono ponownie wywoływane, kiedy przełączam się z powrotem do mojej aplikacji. Jestem więc pewien, że aplikacja została zabita w tle. Ale Android przynosi na koniec ostatniego FarAwayActivity
i natychmiast się zawiesza, ponieważ wszystkie załadowane dane mają wartość zerową.
Pytanie brzmi: jak mogę przekazać wniosek do rozpoczęcia od InitialActivity
, kiedy (i tylko wtedy) zostaje zabity i przywrócony? Coś w rodzaju "zapomnij mój plecak", ale prawdopodobnie automatycznie w manifeście.
Przeczytałem już i wypróbowałem wszystko od Activity tag docs, ale nic nie odpowiada moim oczekiwaniom. Najbliższą rzeczą jest android:clearTaskOnLaunch="true"
, ale po ponownym uruchomieniu aplikacji z komputera kasuje wszystkie pozostałe czynności na stosie (a aplikacja nie jest jeszcze zabita, więc wszystkie dane są dostępne). Aby było jasne, chcę zacząć od InitialActivity dopiero po tym, jak aplikacja została faktycznie zabita.
znalazłeś jakieś wywołanie zwrotne w klasie aplikacji, gdy kontekst aplikacji został zabity? O ile moja najlepsza wiedza idzie, nie ma żadnego. gdyby tak było, możesz w tym momencie wyczyścić swój pełny stos. chyba że nie masz tego konkretnego punktu oddzwaniania, musisz podjąć działania, aby zdecydować o danych. –
@ AmitK.Saha: istnieją metody 'Application.onLowMemory()' i 'Application.onTrimMemory()', ale wątpię, czy mogę ich użyć do wyczyszczenia tylnego stosu. Jak wiem, czyszczenie stosu wstecznego jest wykonywane przez uruchomienie pojedynczego roota 'Activity' z flagą' FLAG_ACTIVITY_CLEAR_TOP'. Uruchomienie nowego "działania" w tym momencie zdecydowanie nie jest w porządku. – Andrew
Application.onTrimMemory() i Application.onLowMemory() są tylko specjalnym wywołaniem zdarzenia, nie zawsze są wywoływane. Dlatego nie możemy ich użyć w tym celu. –