Каково текущее состояние Внутреннего по сравнению с Внешним по сравнению со Сменным и Приемлемым хранилищем в Android? - PullRequest
2 голосов
/ 02 мая 2020

Я просматривал Android документацию в течение многих лет, и я не понимаю, что, по мнению Google, должны означать следующие термины. Кто-нибудь знает, правильна ли следующая интерпретация?

Внутренняя память традиционно относится к внутренней памяти устройства sh, которую нельзя удалить, и приложение всегда имеет возможность чтения / записи доступ к этой области без каких-либо специальных разрешений. Приложение не поддерживает обмен внутренним хранилищем с другими приложениями, а пользователь не может загружать содержимое внутреннего хранилища, например, через MTP. (По-прежнему можно загружать эти файлы без root через adb backup и распаковывать файл резервной копии. Однако на устройстве это нельзя сделать автономно.)

Внешнее хранилище относится к область хранения, общая для всех приложений. Обычно в эту область помещается папка для хранения камеры по умолчанию. Фактическим бэкэндом может быть внутренняя несъемная микросхема fla sh на материнской плате или ее части или вся съемная карта MicroSD в зависимости от версии Android и конфигурации производителя устройства. Современный Android требует, чтобы приложения запрашивали разрешение на чтение или запись этой области. Android 8.0 или выше официально не поддерживают использование всей карты MicroSD в качестве внешнего хранилища. Традиционно это область хранения, которая публикуется через MTP, но чтобы усложнить задачу, некоторые устройства могут называть это «Внутренним хранилищем» при просмотре через MTP, а Съемное хранилище будет называться «SD-карта».

Съемное хранилище относится к области хранения, общей для всех приложений. Это отличается от внешнего хранилища тем, что MediaStore API требует использования в современном Android (версия 8.0 или выше?). Приложения должны быть готовы к потере доступа к этим файлам в любое время из-за отключения карты MicroSD или отзыва разрешений.

Доступное хранилище - это широкий термин, где Android позволяет использовать карту MicroSD для расширения место для хранения на устройстве. На практике это меняет реализацию , описанную выше, на использование принятой карты MicroSD для хранения данных во Internal Storage и External Storage . Некоторые люди считают, что единственный способ прекратить использование любой карты MicroSD в качестве хранилища данных - это выполнить заводские настройки устройства. По моему опыту, можно переместить приложения и данные из Adotable Storage в обычные места, а затем «забыть» карту MicroSD, используемую в качестве Adoptable Storage. Очевидно, что это не сработает, если только реально доступное устройство fla sh не сможет вместить все данные без места на карте MicroSD.

См. Также:

Открытые вопросы (при условии вышеупомянутой интерпретации):

  • Будет ли Внешнее хранилище полностью удалено (Android 10 или 11)?
  • Могут ли разработчики приложений предполагать что-либо о фактическом бэкенде для каталога, возвращаемого getExternalFilesDir()?
  • Могут ли разработчики приложений предполагать что-либо о производительности Internal Storage ? Если я правильно понял, Внутреннее хранилище , просматриваемое приложением, может на самом деле поддерживаться очень медленной картой MicroSD.
  • Какой рекомендуемый способ сохранить файлы, которые являются логически документами, которые должны быть доступным для всех приложений? (Представьте эквивалент «Мои документы» в Windows.) Давайте предположим, что пользователь считает их настоящими документами и НЕ ожидает, что они исчезнут sh, если приложение, использованное для создания этих файлов, было удалено.
  • Должны ли разработчики приложений использовать Storage Access Framework для всего?
  • Каков план того, чтобы все приложения следовали новому стандарту?
  • Как долго будет продолжаться этот план? прошлой? Если я правильно понял, правила были изменены в Android 4.4, 5.5, 8.0 и 10.0.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...