Android Studio / System.exit(0) bez black screena

0

Robię apke z wieloma klasami w Android Studio. Kiedy przechodzę do następnych aktywności chcę kompletnie zwolnic stos z poprzednych klas. Zastosowałem System.exit(0) i działa ale wygląda to brzydko (na sekundę jest black screen). Czy istniteje jakis sposób na połączenie System.exit(0) z jakimś przejściem (np. fade-in, fade-out).

0

Nie używaj System.exit() w aplikacji.
Robię apke z wieloma klasami w Android Studio. Wydaje mi się że chciałeś napisać że masz wiele aktywności, prawda?
Kiedy przechodzę do następnych aktywności chcę kompletnie zwolnic stos z poprzednych klas. Czy to oznacza że chciałbyś mieć zawsze tylko jedną aktywność czy chciałbym zwolnić zasoby gdy "niepotrzebna" aktywność przechodzi w tło?

1

Nie wiem jaką aplikację piszesz ale może się zdarzyć że aplikacji android po prostu tyle pamięci będzie pobierać (na przykład moja aplikacja w drugiej aktywności pobiera kilkakrotnie więcej ramu niż u Ciebie i wszystko jest w porządku). Mógłbyś zapoznać się z dokumentacją: https://developer.android.com/topic/performance/memory, https://developer.android.com/topic/performance/memory-overview . W androidzie jest callback który jest wywoływany gdy na urządzeniu zaczyna brakować pamięci. "Dobra" aplikacja powinna obsłużyć takie zdarzenie poprzez np. uwolnienie zasobów - pozbycie się modeli / bitmap z pamięci.
Niedawno był podobny wątek: zalecanym sposobem jest "zwalnianie" pamięci / zasobów z których chwilowo się nie korzysta gdy dana aktywność idzie w tło. Tutaj natomiast to jest temat rzeka co powinno być zwalniane.

Wydaje mi się jednak że jest tutaj problem XY razem z przedwczesną optymalizacją - jeśli aplikacja działa i nie ma wycieku pamięci to... nic nie rób. Prawdę powiedziawszy OOM w swojej karierze programisty android dostałem może z cztery razy - trzy razy na początku kariery jak dekodowałem ściągnięte bitmapy ręcznie i wstawiałem do ImageView - po dodaniu bibliotek Picasso/Glide problem zniknął. Czwarty problem był związany z odziedziczonym kodem - nie był to problem stricte androidowy po prostu rozwiązanie było bardzo pamięciożerne.

0

StackTrace poproszę

1 użytkowników online, w tym zalogowanych: 0, gości: 1