Предварительная загрузка всех изображений при запуске приложения

Я пытаюсь сделать простую игру «Пары» для Android.

Структура программы

Menu.java (действие меню загружено изначально)

Game.java (игровая активность, запускаемая Menu)
GameThread.java (обрабатывает цикл игры, вызывает процесс рендеринга в GameView)
GameView.java (обрабатывает все рисование на экране)

Graphics.java (сохраняет загруженные изображения)

Проблема

Проблема в том, что загрузка всех растровых изображений, которые мне нужны для активности в игре, занимает до 2 секунд, так как для анимации набора из 15 карточек требуется много изображений. Чтобы избежать большого времени загрузки между действиями меню и игры, я думал о предварительной загрузке всех растровых изображений, необходимых в классе Graphics, в новом потоке при первом запуске приложения (действие меню) и отображении какой-то анимации загрузки. .

Затем, поскольку я не могу передать хранилище графики из действия Menu в действие Game, мне нужно было бы сделать его статическим объектом в действии Menu, чтобы получить к нему доступ из действия Game (используя Menu.graphics ...). Это ужасный способ сделать это? Я всегда думал, что использование статических объектов - плохая идея? Какие еще у меня есть варианты?

Заранее благодарны за Вашу помощь.


person woodstock365    schedule 15.03.2011    source источник


Ответы (1)


Я бы порекомендовал вам использовать для этого AsncTask. Также есть интересная статья под названием Безболезненная потоковая передача на основном сайте документации Android. .

person Andrew White    schedule 15.03.2011
comment
Спасибо, AsyncTask определенно кажется полезным. Что касается использования предварительно загруженных ресурсов из другого действия, допустимо ли просто сделать объект, хранящий Graphics, статическим, или есть лучший способ сделать это (поскольку я не могу передавать объект Graphics между действиями)? - person woodstock365; 15.03.2011
comment
Спасибо! Могу я просто спросить, как лучше всего хранить мои изображения? Я предполагаю, что если я использую массив для указания на R.drawable.someAsset, на самом деле он просто хранит указатель, а не изображение. Все ли изображения нужно загружать в растровые изображения? Кроме того, ресурсы, которые используются для imageViews, которые находятся в макетах xml, как мне сделать так, чтобы макет xml вытягивал ресурс, который уже загружен, а не загружал новый экземпляр? Должен ли я начинать динамическое добавление изображений через код или есть способ ссылаться на изображение из синглтона в XML? - person ThePerson; 22.03.2012
comment
Звучит как новый и отдельный вопрос. - person Andrew White; 23.03.2012