/ / Miejsce na stosy w aplikacji na Androida - Java, Android, pamięć sterty

Sterty miejsca w aplikacji na Androida - java, android, sterty-pamięci

Mam aplikację, która korzysta z SurfaceView narysować animację tak szybko, jak to możliwe. Jest prawie idealny, z wyjątkiem tego, że od czasu do czasu animacja zawiesza się na krótki czas. Ten krótki czas trwa około 10 ms, co nie jest aż tak duże, ale jest wystarczająco duże, aby być zauważalnym przez użytkownika.

Widziałem, że te zawieszenia są spowodowane przez zmiany w przestrzeni sterty, które są wywoływane przez moduł wyrzucania elementów bezużytecznych. Dodawanie android:largeHeap="true" w mojej aplikacji „manifest” nie rozwiązał problemu.

Czy ktoś wie, jak mogę pozbyć się tego irytującego problemu?

Odpowiedzi:

1 dla odpowiedzi № 1

To jest śmieciarz próbujący zwolnić część zasobów. Musisz zobaczyć logcat - będzie tam widoczny.

Sugeruję optymalizację wykorzystania pamięci (obniżbitmapy lub zmodyfikuj schemat ładowania) lub (jeśli to możliwe) znajdź interwał, w którym nic nie jest intensywnie animowane, i wykonaj System.gc () w tym momencie, aby ukryć zamrożenie przed użytkownikiem.


0 dla odpowiedzi nr 2

Wygląda na to, że system Android nie był wystarczająco szybki, aby zwiększyć przestrzeń dla aplikacji.

Spróbuj użyć ustawienia largeHeap w pliku manifestu. Po włączeniu tego ustawienia Android pozostawia więcej wolnej pamięci za każdym razem, gdy powiększa stertę, co minimalizuje szansę na osiągnięcie obecnego limitu.

Musisz tylko ustawić largeHeap="true" na znaczniku aplikacji w pliku AndroidManifest.xml