Я создал живые обои, которые отображают анимацию, сохраняя около 70 изображений в массиве, а затем отображая их по одному для создания анимации. Для его разработки я использовал структуру CubeEngine. По большей части это работает.
Когда я впервые выбираю обои, он загружает массив и отображает анимацию. Затем, когда я нажимаю кнопку «Установить обои», я получаю «OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины». Я добавил вызовы bitmap.recycle(), чтобы попытаться решить эту проблему.
Я поместил Log.d во все события, чтобы попытаться понять поток событий. Это выглядит так: когда нажимается кнопка «Установить обои», поток переходит прямо в Конструктор.
Событие onDestroy или события onSurfaceChanged не запускаются, равно как и любое другое событие, кроме onTouchEvent.
Таким образом, мой исходный массив изображений находится в памяти, и когда он выполняет конструктор, он пытается загрузить другой массив с изображениями и исчерпывает память.
Я не могу найти событие, чтобы поместить логику, чтобы очистить исходный массив, когда они нажимают кнопку «Установить обои».
Есть ли способ добавить логику к кнопке «Установить обои» или есть ли другое событие, которое я могу добавить в свой код, где я должен это сделать?
Я видел, что у других есть эта проблема, но не видел решения.
Любые предложения будут оценены.