Pull to refresh

Comments 12

Не очень изящное, но простое как карандаш и реально работающее решение...

Не очень изящное, это мягко сказано.
… выделенную для вашей аппликации…

аппликацию дети из говна и пластелина в садике делают
Простите, я в России больше семи лет не был, начинаю забывать простые слова.
Конечно же я имел ввиду application = приложение.
Тут вы не правы. Аппликацию из бумаги и клея обычно делают.
А из говна и пластилина скульптура получится. Или художественная лепка на худой конец.
Знаем, знаем… Причем в основном менты получаются. А если только пластилин использовать, то можно и пожарного попробовать вылепить.
Это плохой тон — писать в корень карты. Если пользователь ставит много приложений, пишущих в корень, его карта быстро превращается в файлопомойку, где сложно чтото найти. Тем более файлы остаются после деинсталляции. Пишите лучше в кэш
Согласен, что в корень класть все подряд — не есть хорошо. Но проблема в том, что кэш приложения обычно ОЧЕНЬ глубоко спрятан в дереве каталогов, и мало кто из непрофессиональных юзеров туда сможет добраться даже с подсказкой, ибо путь действительно — оооочень длинный.

Тут же (в данном конкретном приложении) часто необходимо сохранить всего 1-2 фотографии, и иметь к ним быстрый доступ, чтобы можно было скинуть на PC или еще что.

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

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

Расстрелять! То-то у нас после таких приложений все SD-карточки засорены!

>мало кто из непрофессиональных юзеров

Зачем им куда то добираться? У них есть Галерея, которая автоматически всё просканирует.

>ибо путь действительно — оооочень длинный.

По гайдлайнам — /sdcard/Android/com.my.app/ — разве это длинный путь? Если уж не хотите сохранять в ExternalCacheDir так хоть сюда суйте! А теперь вы пропагандируете на Хабре засорение sd-карты своими файлами — причём прямо в корне!
Эх,
>по совокупности разных факторов оба стандартных решения показались мне неоптимальными
мог бы сделать правильно и чисто, но решил просто валить в кучу в корень карты памяти…

Не совсем понял пользу вашей функции ведь вы предварительно установили эту картинку в ImageView, зачем же из неё же потом сохранять на диск? Операция сохранения на диск должна была предшествовать отображению в ImageView.

В целом статья довольно примитивна, ни тебе загрузки картинок из интернета, ни использования aSyncTask или потоков, что бы не блокировать файловыми операциями основной поток приложения, я уже не говорю, про одновлеменную загрузку множества картинок, управление очередью загрузки и т.д.
Пара замечаний. Во-первых, как связаны getExternalStorageState и то, что размер чего-то не отслеживается системой? Эту функцию надо вызывать, просто чтобы проверить, доступна ли карта.

Во-вторых, соглашусь с тем, что засорять корень карты нехорошо. На мой взгляд, лучший вариант — использовать getExternalFilesDir(Environment.DIRECTORY_PICTURES) и писать туда. Еще вариант — getExternalStoragePublicDirectory.
Sign up to leave a comment.

Articles