Intereting Posts
Android Studio Execution не удалось выполнить задачу: app: preDexDebug ' Пользовательский вид таблеток Android Создание приложения для Android Динамически устанавливать полномочия ContentProvider Наложение изображения (на холсте) на VideoView? Java.lang.NumberFormatException: Недопустимый int: "" Android – создать форму стрелки с помощью xml Автоматическое заполнение текстового поля в titanium ios и Android Android-приложение для продажи приложений с использованием другого ключа подписи SSLHandshakeException: привязка привязки для пути сертификации не найдена. Только на Android API <19 Как использовать matrix.preScale (x, y) Android-Studio: Ошибка: не удалось создать виртуальную машину Java АБР не отвечает. Вы можете подождать больше или уничтожить процесс «adb.exe» вручную и нажать «Перезагрузить», Отправьте электронное письмо с приложением из приложения Kivy на Android, желательно, открыв почтовый клиент Импорт нового баннера Apache HttpClient в Android

Android – Где хранить загруженный контент, внутренний или внешний накопитель?

Несколько отдельных, но связанных вопросов, касающихся хранения загруженного контента в моем приложении.

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

Если приложение установлено на SDCARD (как мое настроено для того, чтобы быть), то это «внутреннее» хранилище также физически находится на SDCARD? Таким образом, если установленное SDCARD приложение загружает, скажем, 100 МБ содержимого во внутреннее хранилище, то это на самом деле заканчивается на SDCARD или заканчивается в физическом встроенном хранилище устройства?

Если приложение установлено на SDCARD, а «внутреннее» хранилище с загруженным контентом находится на SDCARD, то оно физически хранится в открытом формате или зашифровано? Я, кажется, помню, что читал, что приложение, хранящееся на SDCARD, зашифровано. Это относится также и к «внутреннему» хранилищу?

(Удаленный вопрос о хранении файлов в одном каталоге как Context.getDir () означает, что система каталогов может создаваться и поддерживаться во внутреннем хранилище)

Есть ли лучший подход?

Сделал кучу экспериментов и пришел к следующим выводам с Android 2.2 на Motorola Droid 2:

  • Когда приложение установлено / перемещено в SDCARD, оно сохраняется как файл .asec в скрытом каталоге /.android_secure на SDCARD. Это зашифрованный и сжатый файл.
  • Когда приложение создает файлы данных во «внутреннем хранилище», они сохраняются во внутренней памяти устройства, а не на SDCARD.
  • Диалоговое окно «Параметры / Управление данными о приложениях» для приложения имеет значение «Данные» – это объем данных, которые приложение использует в своем внутреннем хранилище, которое находится во внутренней памяти, а не на SDCARD
  • Внешнее хранилище заканчивается на SDACRD в каталоге / Android / data
  • Очистка данных в диалоговом окне «Настройки / Управление приложениями» действительно уничтожает все, что означает, что установленное приложение должно иметь достаточное знание / логику для обработки ситуации «без данных».

Мое приложение – это приложение для загрузки контента. Для меня это все значит:

  • Существует мало реальной ценности для хранения моего маленького приложения на SDCARD, учитывая, что основная часть памяти, которую он будет потреблять на телефоне, будет находиться во внутренней памяти устройства. За исключением, конечно, что это всегда хорошо, чтобы приложение могло установить на SDCARD.
  • Пакет установки должен иметь возможность восстанавливать загруженный контент пользователя, если он очищается пользователем.
  • Концепция сохранения уникального идентификатора установки во внутренней памяти работает хорошо, пока пользователь не удалит данные приложения и, следовательно, не будет вычисляться новый идентификатор установки. Таким образом, чтобы иметь возможность помнить, какой контент был загружен на устройство, требуется учетная запись пользователя на центральном сервере, который пользователь создает / регистрирует, всякий раз, когда приложение запускается с нуля.