В моем приложении для Android я создал представление, показывающее поле 9x9 (см. упрощенный снимок экрана):
Каждое поле в представлении представлено ImageView (отображает изображения вместо прямоугольников). Некоторые ImageViews будут удалены, если установить для них значение null
и установить для видимости значение View.GONE
, а новые ImageView будут создаваться каждый раз, когда в поле добавляется новый элемент. Это означает, что я создаю много ImageView за короткий промежуток времени. Дело в том, что игра отлично работает на моем HTC One, но через какое-то время начинает лагать (думаю, когда работает сборка мусора), а потом перестает лагать и снова отлично работает.
Это подводит меня к идее использования Pool
для управления моими объектами, например. переработав «удаленные изображения» и повторно используя их, установив положение и изменив источник изображения. Я разрабатываю для простого Android, но думаю об использовании фреймворка LibGDX.
Мой вопрос: есть ли у вас какие-либо предложения о том, как реализовать пул на простой Java/Android? Я нашел этот сообщение интересное, подумал, что мог бы использовать Apache Commons ObjectPool. Есть ли лучший способ на Android или LibGDX?
Примечание. ImageView не находятся в одной и той же позиции каждый раунд. Я перемещаю их с помощью Tween Engine. Тем не менее, количество просмотров изображения является постоянным. Значит, в какой-то момент игры у меня есть 81 ImageView (9 * 9) плюс несколько ImageView для анимации специальных событий (возможно, +10).
Буду признателен за любые советы/рекомендации.
С наилучшими пожеланиями,
Джимми