2014-10-24 1 views
0

1) Это считается хорошей тактикой для утилизации всех растровых изображений и данных в методе OnStop активности.Возможно ли переработать все данные на OnStop() И использовать фиксирующий фрагмент?

2) Также считается хорошей тактикой использования фрагмента фиксатора, чтобы избежать воссоздания данных при каждом изменении конфигурации. Но я не вижу, как эти два сочетаются?

Предположим, я использую фрагмент для загрузки кучи растровых изображений ... В OnCreate я проверяю, является ли этот фрагмент нулевым или нет, чтобы получить его данные или создать экземпляр нового для их создания. Если я переработаю все мои растровые изображения в OnStop(), то при изменении конфигурации ничего не останется, потому что все данные будут переработаны.

Итак ... Я не вижу возможности сочетать эти две тактики. Я ошибаюсь? А если нет, то какой из двух лучше всего использовать?

В моем случае речь идет о загрузке изображений из папки SD-карты. может быть только один pic, может быть 500 ... и показывая изображения не все мое приложение делает это после этой деятельности может понадобиться память другой деятельностью.

ответ

0

На Android 2.3.3 (уровень API 10) и ниже, с использованием утилиты() используется . Если вы показываете большое количество растровых данных в вашем приложении , вы, вероятно, столкнетесь с ошибками OutOfMemoryError. Метод recycle() позволяет приложению восстановить память как можно скорее.

В соответствии с этим вам даже не нужно вызывать переработку на устройствах с интерфейсом API 11 или выше, поэтому это может быть не проблема для вас.

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

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

Еще одна вещь, которую следует отметить, - это стратегия, которую вы пытаетесь выполнить, вы не очищаете ресурсы в onStop(), а сохраняете фрагмент onDestroy(). OnDestroy() на сохраненном фрагменте не будет вызван при изменении конфигурации, потому что фрагмент никогда не уничтожается. Таким образом, ваши ресурсы могут оставаться в памяти за пределами жизненного цикла вашей деятельности и будут уничтожены в конце жизненного цикла вашего приложения.

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