2010-06-15 5 views
0

У меня есть приложение, которое динамически генерирует от 6 до 100 небольших растровых изображений, чтобы пользователь мог перемещаться по экрану в данном сеансе. В настоящее время я создаю их в onCreate и сохраняю их на SD-карте, так что после изменения ориентации я могу вытащить их из внешнего хранилища и отобразить их снова. Однако для этого требуется время (загрузка), и я хотел бы сохранить ссылки на растровые изображения между изменениями lifecyle для более быстрого доступа.Android - Где хранить сгенерированные растровые изображения?

Мой вопрос: есть ли лучшее место для хранения моих сгенерированных растровых изображений? Я думал о создании статической библиотеки хранения в моей базовой деятельности, что нужно было бы перезагрузить, только когда приложение полностью удалено из памяти (выключение, другие приложения потребуют ресурсов, 30-минутный перезапуск и т. Д.).

В идеале, я хотел бы, чтобы пользователь мог вернуться на экран заголовка, нажать кнопку «Возобновить» и в onCreate. У меня только есть доступ к резидентным растровым ссылкам вместо того, чтобы загружать их из хранилища еще раз. По этой причине я не думаю, что Activity.onRetainNonConfigurationInstance - это то, что мне нужно.

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

ответ

5

Определите, пожалуйста, blog post от Romain Guy о сохранении сгенерированных растровых изображений при изменении ориентации. Это похоже на почти идентичный случай. Суть в том, что вы можете использовать /getLastNonConfigurationInstance для передачи/получения произвольного объекта в результате разрушения активности, связанной с ориентацией. Тем не менее, это не поможет вам отступить, а затем начать работу.

Вы также мог бы втиснуть Bitmaps в статический кэше-подобный объект (возможно SoftReference HashMap на качестве Application класса), но будьте осторожны, чтобы не хранить вводимый коэффициент или взгляды, которые могут привести к memory leaks из-за их ссылки на их содержащую активность. Это будет сохраняться для жизни всего приложения, но я бы избегал этого, если вообще возможно, поскольку любое глобальное состояние может вызвать уродливые проблемы и трудно найти утечки памяти, когда вещи ссылаются на экземпляры Activity.

+0

У меня было ощущение, что идея кэша не будет летать. Я бы только помещал растровые изображения там (так что нет утечек Контекста), но я предполагаю, что мне просто нужно было подтолкнуть в правильном направлении. Похоже, onRetain - это путь. – Josh

Смежные вопросы