Живые обои - "Set Wallpaper" - Нужно событие, чтобы использовать, чтобы очистить память - PullRequest
5 голосов
/ 03 декабря 2011

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

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

Я поместил Log.d во все события, чтобы попытаться понять поток событий. То, на что это похоже, - то, когда кнопка "Установить обои" нажата, поток идет прямо в Конструктор.

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

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

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

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

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

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

1 Ответ

0 голосов
/ 22 ноября 2013

Если вы хотите выполнить какую-либо загрузку или выгрузку, вы можете определить, когда изменяется видимость 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см. жизненный цикл активности

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