Было бы целесообразно хранить много изображений в apk-файле Android для социального приложения
Я создаю социальное приложение для Android и планирую наперед, какой будет эффективный способ в Android хранить потенциально миллионы сгенерированных пользователями загруженных фотографий. У меня есть база данных MySQL, в которой сохраняется путь к изображению, и я думал о создании папки вне каталога /drawable для сохранения физических изображений. Я мог это сделать, но потом подумал, что если бы я это сделал, то APK-файл Android просто увеличился бы по размеру, так как вы сохраняете все изображения в приложении; Есть ли лучший способ хранить много изображений? Я искал ответы, но не так много в этой теме для Android.
2 ответа
Что делают большинство приложений для социальных сетей, так это то, что они синхронизируют данные. Это то, что вам нужно сделать. Не добавляйте изображения в приложение. Скорее получите местоположение / путь к внешнему хранилищу в телефоне. См. Этот вопрос, этот вопрос и эту ссылку. И тогда, когда пользователь открывает это приложение. Синхронизируйте данные с вашей базой данных MySql против локальной базы данных Sqlite.
Таким образом, вы также сможете избежать ошибки OutofMemory
То, что вы хотите, это не сохранять изображения в вашем apk, а во внешней папке. Как только ваше приложение было превращено в apk, вы ничего не можете изменить в нем.
Особенность Android-устройств в том, что они бывают разных видов. В некоторых есть слот для SD-карты, в некоторых есть только внутренняя память (например, Nexus), а в более дешевых моделях не хватает памяти.
Динамический контент, такой как у вас, должен быть доступен через удаленный сервер и только по требованию. Если ваш пользователь больше не видит или не хочет его видеть, не храните его на своем телефоне. А люди, которые активно работают в социальных сетях, не интересуются тем, что произошло несколько дней назад. Я предлагаю следующее: сохраняйте изображения в AWS S3 или другом облачном решении, а затем заставляйте приложение связываться с вашим сервером для получения URL-адресов. Изображения, которые фактически загружаются на устройство, должны кэшироваться с истечением срока действия, возможно, нескольких дней. Оставьте как можно меньший след.