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

Android Studio / System.exit(0) bez black screena
U6
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:40
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).

edytowany 2x, ostatnio: user656
LP
  • Rejestracja:około 7 lat
  • Ostatnio:27 dni
  • Postów:366
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?

U6
To pierwsze:) Przykładowo będąc w Activity 1 profiler pokazuje mi 20mb, kiedy przechodze do Activity 2 pamiec ładuje się do 45mb.
LP
  • Rejestracja:około 7 lat
  • Ostatnio:27 dni
  • Postów:366
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ę

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.