Страница 1 из 1

Как подтягивать графические ресурсы с сервера?

Добавлено: 24 ноя 2015, 02:04
GRAF_COLLIOSTRO
моё приложение содержит кучу инфы с картинками. что-то типа учебника с тестами. юзверь выбирает тему и просматривает её, потом проходит тест. всё реализовал, вопросов не возникло, но вот ужаснулся при набивании контента. очень много получилось картинок - около 200 МБ после того как пожал всё))) а ведь хочется картинки хорошего качества, вдруг на планшете во весь экран будут их просматривать)

Более того, если юзверь не зайдёт в соответствующий раздел, то никогда не увидит картинки из этого раздела. Закачивать ему ВСЕ нет смысла.

Есть интернет-сервер.

идея такая: залить картинки на сервер и при выборе раздела подкачивать соответствующие картинки из сети.

и тут масса вопросов:

как их дёрнуть и куда? так чтобы второй раз не перекачивать...

кто сталкивался с подобным, поделитесь мыслями. Конечно, готовый код не прошу, но хотя бы по методике действий соориентируйте.

п.с. Ну, примерчик скачивания по урлу в виде кода не помешал бы)

Re: Как подтягивать графические ресурсы с сервера?

Добавлено: 24 ноя 2015, 06:55
klblk
Самым попсовым решением будет picasso.
Менее попсовый использовать NetworkImageView из Volley.

Re: Как подтягивать графические ресурсы с сервера?

Добавлено: 18 дек 2015, 02:05
GRAF_COLLIOSTRO
Эммм... спасибо большое за нужное направление вектора...

Теперь у меня возникли вопросы по кэшу. Нашёл на просторах сети вот такой пример:

Код: Выделить всё

import android.support.v4.util.LruCache;

public class Cache {

    private static Cache instance;
    private LruCache<Object, Object> lru;

    private Cache() {

        lru = new LruCache<Object, Object>(1024);

    }

    public static Cache getInstance() {

        if (instance == null) {

            instance = new Cache();
        }

        return instance;

    }

    public LruCache<Object, Object> getLru() {
        return lru;
    }
}
топорно можно кэшировать изображения. Только не пойму принципа работы. Где хранится этот кэш? при перезагрузке обнуляется? и ещё, как я понял дройд подкачивает его в память - какбы держит на готове... Только вот механизм не понятен. Повторюсь, у меня порядка 300 МБ картинок. Я подкачиваю их на ходу в бэкграунде и закидываю в кэш. Когда нужна картинка, проверяю в кэше и если её нет, то докачиваю. Всё просто. Но!

Сколько оно жрёт оперативы? сколько можно картинок (или в килобайтах оно измеряется) туда запихать? В общем какие у него ограничения? у меня не предусмотрено никакой логики на случай, если памяти нехвата)))

Подскажите, кто сталкивался? надо делать проверки на размерность и свободное место?

Re: Как подтягивать графические ресурсы с сервера?

Добавлено: 18 дек 2015, 18:35
GRAF_COLLIOSTRO
разобрался с механизмом: Картинки кэшируются в кэш приложения. В настройках у приложения можно видеть общий размер + размер данных (preference) + кэш.

остаётся вопрос, что будет при нехватке памяти и нужно ли проверять свободное место перед кэшированием?

Re: Как подтягивать графические ресурсы с сервера?

Добавлено: 27 янв 2016, 05:07
TemMax
могу порекомендовать ограничить размер кэша на диске (например 50МБ) и чекать его периодически. При переполнении удалять самые старые файлы из папки.