Рисуемое преимущество перед растровым изображением для памяти в Android - PullRequest
11 голосов
/ 31 декабря 2010

Этот вопрос связан с ответами на следующий вопрос:

Ошибка удаления растровых изображений [Android]

Есть ли преимущество использования Drawable по сравнению с Bitmap в Androidс точки зрения выделения памяти?

Я просматривал полки проекта Romain Guy, и он использует SoftReference для кэшей изображений, но я не могу найти, где находится код, который выделяет эти Drawables, когда SoftReference автоматическивосстанавливает память для растрового изображения.Насколько я знаю, .recycle () должен быть явно вызван на растровом изображении, чтобы его можно было перераспределить.

Ответы [ 3 ]

10 голосов
/ 04 марта 2011

В моем понимании, растровые изображения обычно лучше для производительности, если вам не нужно много манипулировать изображениями.Тем не менее, я столкнулся с утечками памяти, когда я не перерабатывал их вручную.Мое решение состояло в том, чтобы написать класс , чтобы помочь мне управлять своими изображениями, что обеспечивает простой способ перерабатывать все мои растровые изображения в определенных точках моего приложения.Он также предоставляет простой способ повторного использования уже загруженных ресурсов (включая Drawables).

9 голосов
/ 31 декабря 2010

Вам не нужно вызывать Bitmap.reycle ().Это будет сделано для вас в финализаторе.Выполнение этого в финализаторе означает, что выделение будет отложено до запуска финализаторов, поэтому, когда это возможно, прямой вызов recycle () может помочь с управлением памятью.

0 голосов
/ 11 марта 2014

Точность.на эту страницу , начиная с уровня API 11, данные пикселей растрового изображения сохраняются в куче Dalvik вместе со связанным растровым изображением.Таким образом, вызов .recycle на самом деле не требуется, если только вы не хотите вернуть память вручную для дальнейшего использования.Обязательно отмените ссылку и на растровое изображение, просто как дополнительную меру.

PS: Эта ссылка объясняет ответ hackbod .

...