Вопрос по android – Утечки растровой памяти

2

Итак, до соты объект Bitmap был просто указателем на собственную кучу  пространство памяти (используя malloc), и я мог очистить эту память, вызывая .recycle (); после сота память для растрового изображения выделяется в куче приложения, которая получает вызовы gc.

Мой вопрос: мое приложение должно поддерживать 2.2+, что мне делать? Проверить версию и позвонить в recyle? Не вызывать рециклировать вообще? Каков твой совет для этого. Потому что у меня есть BitmapCache, который содержит несколько экземпляров Bitmap, и я не хочу, чтобы они навсегда остались в памяти.

Ваш Ответ

3   ответа
3

будь то фройо, пряник или соты. Вы должны проверить себя для управления памятью. Да, начиная с версии 2.2+ вы можете настроить свое приложение с помощью sdcard, но сохранение растровых изображений в динамической памяти всегда создаст проблему для использования любой из этих версий. Если вы хотите использовать только растровые изображения, попробуйте эту ссылку. Они дали вам много способов эффективного управления растровыми изображениями. Перейдите по этой ссылке: Эффективное отображение растровых изображений

0

Android 2.2 или Android 3.0 или выше, чем Android 3.0, растровое изображение, которое вы не хотите использовать, вам также нужно вызватьbitmap.recycle()

хотяandroid >=3.0 Сохранение растрового изображения в куче dalvik, а не сохранение в родной куче. таким образом, как в куче Java, если у вас есть некоторые ссылки для ссылки на объект, объект не может бытьgc системой, и растровая память может занимать много памяти, если вы не убедитесь, что счетчик ссылок на объекты равен нулю, это будет большой проблемой.

кэш растрового изображения, который вы сказали, может сохранить растровое изображение, поэтому, если вы используетеWeakReference или жеSoftReference сохранить растровое изображение, и используяWeakReference.get() или жеSoftReference.get() чтобы вернуть растровое изображение,bitmap ссылка находится в правильном управлении системой. В противном случае вам нужно управлять самостоятельно.

Вы должны вызывать recycle () (независимо от версии) всякий раз, когда вы заканчиваете работу с растровым изображением, прежде чем устанавливать его в null. Это зависит от того, что вы хотите сделать, когда вам следует звонить. Я склонен использовать растровые изображения, а не удалять их и создавать новые.
поэтому, если у меня есть WeakReference & lt; Bitmap & gt; GC позаботится об этом для меня, верно? однако моя реализация должна вызывать recycle () для версий до 3.0? когда я должен назвать это переработка? и почему в этом урокеdeveloper.android.com/training/displaying-bitmaps/… они сказали, что не рекомендуется использовать Soft и Week References? Arthur Neves
0

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

Эти вещи вместе будут решением, я уверен, ..

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

Надеюсь, это не слишком много ссылок, но когда мы его получим, оно будет работать как шарм;)

ура

Похожие вопросы