Размер кеша во внутренней памяти

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

В документации разработчиков говорится: «Вы всегда должны поддерживать файлы кеша самостоятельно и оставаться в разумных пределах потребляемого пространства, например 1 МБ». Этот текст слишком старый? Устройства, которые я видел за последние 12 месяцев, имеют сотни мегабайт встроенной памяти (планшеты могут иметь гигабайты — и я не путаю здесь разные типы хранилищ).

Даже приличная миниатюра на большом экране может легко занимать около 20-30 кбайт, и вы можете отображать на экране 50 миниатюр одновременно. Если вы сделаете некоторую прокрутку, вы будете использовать более 1 МБ.

Как вы думаете, ребята, я могу использовать, скажем, 10 мегабайт (не увеличивая, поддерживая его должным образом)? Знаете ли вы о каком-либо приложении Google или другом популярном приложении, которое поддерживает кэш во внутренней памяти намного больше, чем 1 МБ?

Изменить: я спрашиваю об этом типе памяти: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal


person user289463    schedule 22.02.2012    source источник
comment
Возможно ли, что в тексте говорилось о реальной аппаратной кэш-памяти? 1-2 МБ - это приличный объем для кеша.   -  person Adrian    schedule 22.02.2012


Ответы (1)


Устройства, которые я видел за последние 12 месяцев, имеют сотни мегабайт встроенной памяти (планшеты могут иметь гигабайты — и я не путаю здесь разные типы хранилищ).

Новые устройства имеют больше памяти. У старых устройств меньше памяти. Поддерживая только более новые обновления ОС Android, вы, как правило, будете иметь устройства с большим объемом внутренней памяти. И, начиная с Android 3.0, внутреннее и внешнее хранилище работают из одного и того же пространства (внешнее хранилище фактически является подкаталогом во внутреннем хранилище), и внешнее хранилище всегда должно быть доступно.

Как вы думаете, ребята, я могу использовать, скажем, 10 мегабайт (не увеличивая, поддерживая его должным образом)?

На Android 3.0 и выше, конечно.

Возможно на Android 2.3 и выше.

На Android 2.2 и ниже я бы не стал.

И в любом из этих случаев:

  • Разрешить пользователю настраивать размер кэша
  • Уважайте ACTION_DEVICE_STORAGE_LOW трансляции, чтобы обрезать кеш
person CommonsWare    schedule 22.02.2012
comment
Привет CommonsWare, Спасибо за ваш ответ. Я думаю, вы, возможно, неправильно меня поняли. Я говорю о внутреннем хранилище, которое является частным приложением и недоступно для кого-либо еще, если устройство не рутировано. - person user289463; 23.02.2012
comment
@ user289463: Нет, я тебя понял. Мой ответ остается в силе. - person CommonsWare; 23.02.2012
comment
Мой комментарий был довольно плохим и ошибочным, извините. Лучшая попытка: Терминология, которую я использую: Внутренняя память: личное хранилище приложений, очень ограниченное в старые времена. Память телефона: терминология HTC для их встроенных флэш-накопителей. Внешнее хранилище: терминология Android для единственного хранилища, которое не является внутренней памятью. . (Google официально не поддерживает взломы хранилищ OEM-производителей, если только они не добавят его в качестве подкаталога в существующее местоположение внешнего хранилища). Поэтому я не собираюсь использовать внешнее хранилище. - person user289463; 23.02.2012
comment
Так же про внешнее хранилище должно быть всегда доступно: На Xoom это так, да. ... но взгляните на HTC Flyer с Honeycomb. Им удалось взломать исходное общее/установленное эксклюзивное ограничение обратно в Honeycomb. - person user289463; 23.02.2012
comment
@ user289463: Я все еще понял тебя. Мой ответ остается в силе. Вы спросили, можете ли вы использовать 10 МБ кэш-памяти, и я ответил, что я бы не стал этого делать на Android 2.2 или младше, но на Android 3.0 и выше это не должно быть проблемой. Какая часть этого ответа слишком сложна? - person CommonsWare; 23.02.2012
comment
CommonsWare: Я не понимаю первую часть вашего ответа, поэтому я не уверен, правильно ли вы ответили во второй части. Проблема первой части: вы говорите, что внешний каталог является подкаталогом внутреннего. Я этого не понимаю, так как Internal является частным приложением и даже не виден, например, из файлового браузера. Внешнее — это общедоступное хранилище, поэтому, если это подкаталог под преднамеренным, он не будет виден. Я что-то пропустил? Кроме того, я не знаю, как внешняя часть должна быть всегда доступна для моего вопроса. (И это, к сожалению, даже не помогает, например, на HTC Flyer.) - person user289463; 23.02.2012
comment
@ user289463: Я что-то пропустил? -- в большинстве операционных систем, написанных за последние два десятилетия, подкаталог может иметь другие права доступа, чем его родительский каталог. - person CommonsWare; 23.02.2012
comment
CommonsWare: Хорошая мысль. Я все еще думаю, что ответ смешивает несколько несвязанных вещей, но я не хочу сводить вас с ума, поэтому я просто принимаю это и провожу свое исследование;) - person user289463; 23.02.2012