2013-11-21 3 views
1

Я просто немного ListView, содержащий все установленные приложения и их значки
, но если установлены слишком много приложения я запускаю в outOfMemoryErrors при этомандроид LoadIcon генерирует OutOfMemoryError

Drawable app_icon = applicationInfoList.get(i).loadIcon(context.getPackageManager())); 

, что для каждого ListEntry (этой линии написано в моих ListAdapter)

без проблем до сих пор, я понимаю, почему я столкнулся с этой ошибкой (слишком много иконок загружена, слишком мало Vm кучу)
но я имел взгляд на Sourc е код андроидов ManageApplications активности в настройках
и я никогда не работаю ни в одном из этих ошибок Oom при использовании настроек ManageApps
, но странно то, что они делают это ИМЕННО ТОТ ЖЕ ПУТИ

, как вы можете видеть в их источнике здесь:
the ManageApplications activity
where the Drawable icon gets loaded
where it is set in the list view

, но я действительно не понимаю, почему я получаю ум, и они не делают?

+0

Срочно, вы решили? – thecr0w

+0

Теперь я создал LruCache, который решил его. – bricklore

+0

Хорошо, благодарю вас за информацию. – thecr0w

ответ

1

Решил сам.
Теперь я загружаю каждое изображение в кеш, прежде чем использовать его.
Если кеш заполняется, самый старый элемент будет отброшен,
, так что новые могут быть кэшированы. Кроме того, меняя размеры моих изображений на меньшие значки.
это сделал.

+3

Поздравляем, не могли бы вы поделиться своим кодом? Это похоже на демонстрацию BitmapFun от Google? – thecr0w

+0

Хорошо, что вы это решили, но если вы уже решили оставить вопрос, по крайней мере, поделитесь решением. – SagiLow

+0

@SagiLow Так не сделал я это? Перечитайте мой ответ, пожалуйста. Я сказал вам все, что я сделал: Избегайте проблемы – bricklore

1

Измените размер значков на мелкие изображения, все будет в порядке! (была эта проблема и раньше)

+0

, но это не делается в ManageApplications Activity - так где же разница между моим кодом и кодом? – bricklore

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