Stworzyłem Live Wallpaper, która wyświetla animację, przechowując 70 lub więcej obrazów w tablicy, a następnie wyświetla je w jednym momencie, aby utworzyć animację. Użyłem konstrukcji CubeEngine do jej zaprojektowania. W większości działa.Live Wallpaper - "Ustaw tapetę" - Potrzebujesz zdarzenia do wyczyszczenia pamięci
Po pierwszym wybraniu tapety ładuje ona tablicę i wyświetla animację. Następnie, po kliknięciu przycisku "Ustaw tapetę", pojawia się "OutOfMemoryError: rozmiar bitmapy przekracza budżet VM". Dodałem wywołania bitmap.recycle(), aby spróbować rozwiązać ten problem.
Umieściłem Log.d we wszystkich zdarzeniach, aby spróbować zrozumieć przebieg wydarzeń. Wygląda na to, że po naciśnięciu przycisku "Ustaw tapetę" przepływ przechodzi prosto do Konstruktora.
Zdarzenie onDestroy lub zdarzenia onSurfaceChanged nie są wywoływane ani żadne inne zdarzenie, z wyjątkiem onTouchEvent.
Tak więc moja oryginalna tablica obrazów jest w pamięci, a kiedy wykonuje Konstruktor, próbuje załadować inną tablicę z obrazami i skończy się jej pamięć.
Nie mogę znaleźć wydarzenia, w którym można umieścić logikę, aby wyczyścić moją oryginalną tablicę po kliknięciu przycisku "Ustaw tapetę".
Czy istnieje sposób na dodanie logiki do przycisku "Ustaw tapetę" lub czy jest jeszcze jedno zdarzenie, które mogę dodać do kodu, w którym powinienem być w stanie to zrobić?
Widziałem, jak inni mają ten problem, ale nie widziałem rozwiązania.
Wszelkie sugestie zostaną docenione.