Живые обои - Установить обои - Нужно событие для очистки памяти

Я создал живые обои, которые отображают анимацию, сохраняя около 70 изображений в массиве, а затем отображая их по одному для создания анимации. Для его разработки я использовал структуру CubeEngine. По большей части это работает.

Когда я впервые выбираю обои, он загружает массив и отображает анимацию. Затем, когда я нажимаю кнопку «Установить обои», я получаю «OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины». Я добавил вызовы bitmap.recycle(), чтобы попытаться решить эту проблему.

Я поместил Log.d во все события, чтобы попытаться понять поток событий. Это выглядит так: когда нажимается кнопка «Установить обои», поток переходит прямо в Конструктор.

Событие onDestroy или события onSurfaceChanged не запускаются, равно как и любое другое событие, кроме onTouchEvent.

Таким образом, мой исходный массив изображений находится в памяти, и когда он выполняет конструктор, он пытается загрузить другой массив с изображениями и исчерпывает память.

Я не могу найти событие, чтобы поместить логику, чтобы очистить исходный массив, когда они нажимают кнопку «Установить обои».

Есть ли способ добавить логику к кнопке «Установить обои» или есть ли другое событие, которое я могу добавить в свой код, где я должен это сделать?

Я видел, что у других есть эта проблема, но не видел решения.

Любые предложения будут оценены.


person user1079209    schedule 03.12.2011    source источник


Ответы (1)


Если вы хотите выполнить какую-либо загрузку или выгрузку, вы можете определить, когда изменяется видимость WallpaperService.Engine, переопределив onVisibilityChanged(логическое значение visible).
Вы также должны возобновить или приостановить работу GlSurfaceView при изменении видимости.

Дополнительную информацию можно найти здесь:
http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onVisibilityChanged(boolean)
http://developer.android.com/reference/android/opengl/GLSurfaceView.html
см. жизненный цикл активности

person Seb    schedule 22.11.2013