Внешняя и внутренняя память. Что мне использовать?

Я использую версию LazyList для загрузки изображений. Использует внешнее хранилище, что не плохо. Но чтобы не показывать эти файлы всем, у кого есть обозреватель файлов, я решил использовать внутреннюю память, максимальный объем памяти для этого (5 мБ).

Что я должен делать? Есть ли другие возможности?

4 ответа

Решение

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

Я бы выбрал внешнюю память (SD-карту), и если бы прямой доступ к изображениям был проблемой, то я бы:

  1. Зашифруйте файл. Это тяжело, и это замедлит ход событий.
  2. Зашифруйте файл. Это включает в себя перемещение байтов, например, перемещение первых 1000 байтов в конец файла и т. Д. Вы можете создать свою собственную версию InputStream что делает перестановку байтов, и передать его BitmapFactory.decodeStream(..),

Внутренняя память должна использоваться для мелких вещей, которые вы не хотите, чтобы кто-то вмешивался. Внешняя память (обычно SD-карта) может быть доступна другим приложениям и пользователю. Как примечание: внутренняя память является "дорогой", и пользователи, как правило, удаляют приложения, которые занимают много внутренней памяти.

С внешней памятью, просто убедитесь, что она действительно доступна. SD-карта может отсутствовать, извлекаться, монтироваться или даже не существовать (не на всех устройствах Android есть).

Скорость доступа варьируется. Я точно знаю, что некоторые устройства Samsung имеют довольно медленное внешнее хранилище, а внутреннее - очень быстрое.

Альтернативным вариантом будет загрузка ваших изображений из сети. Это также позволит вам контролировать их, если вам потребуется изменить их в будущем. Их размещение на Amazon S3 обойдется в несколько центов в месяц.

Просто сноска (в настоящее время у меня недостаточно репутации, чтобы добавить комментарий). @WinOrWin, очевидно, поток, на который вы ссылаетесь, говорит о "памяти", ОЗУ, тогда как этот поток говорит о "пространстве хранения"(хотя в разговорной речи люди могут называть его "внутренней / внешней памятью"). Они не одно и то же. (например. Основная разница между дисковым пространством и памятью).

Если вы не хотите, чтобы все пользователи с файловым браузером видели ваши файлы, вы можете создать папку с точкой перед ней, например, "/sdcard/.hidden", но если они переключают отображение скрытых файлов и папок, вам не повезло.

вот ссылка на страницу Android о хранении данных

Надеюсь это поможет

Другие вопросы по тегам