Я думаю о реализации первого слоя моего кэширования в приложении для Android.Я рассматривал SoftReferences, чтобы наверняка избежать исключений OOM, но так как есть много статей о том, как Android освобождает их «слишком рано», я решил заглянуть в кэш android.util.LruCache.
Вопрос: Как мнеПравильно ли он подходит для реального устройства?Все это звучит очень хорошо, что кеш LRU - это реальное решение, а не SoftReferences, но если вы действительно хотите избежать исключений OOM, вам будет крайне опасно использовать любое количество мегабайт жестких ссылок.Это просто небезопасно, если вы спросите меня.Во всяком случае, это, кажется, единственный вариант.Я искал в getMemoryClass, чтобы узнать размер кучи приложения на реальном устройстве (+ проверка размера свободной кучи перед изменением размера кэша).Базовая строка составляет 16 мегабайт, что звучит нормально, но я видел устройства (например, G1 в старые времена), которые выдавали исключения OOM всего около 5 мегабайт размера кучи (согласно Eclipse MAT).Я знаю, что G1 очень старый, но дело в том, что мой опыт не совсем соответствует базовому уровню в 16 мегабайт, который упоминается в документации.Поэтому я совершенно не уверен, как мне масштабировать кэш LRU, если мне нужно больше, чем я могу разумно получить.(был бы счастлив с 8 Мегабайтами и мог бы использовать всего 1 Мегабайт на устройстве с низкой спецификацией)
Спасибо за любые подсказки.
Редактировать: класс кэша Android LRU Яссылаясь на: http://developer.android.com/reference/android/util/LruCache.html