2015-02-22 3 views
1

Я работаю над приложением, которое будет получать данные и изображения с webservice и хранить их на устройстве в автономном режиме. В то же время приложение будет иметь некоторые данные, хранящиеся в sqlite db, а некоторые изображения - данные по умолчанию.Online/Offline Стратегия управления изображениями

Вот поток приложения:

  • Когда приложение открывает будет захватывать данные из Sqlite Db и изображения путей изображений, хранящихся в устройстве, и отображать их.
  • Кроме этого, если есть подключение к Интернету, данные и изображения из webservice будет потребляться и копируется в Sqlite DB(data) и к device(images) быть позже автономный доступ к

Вот вопрос :

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

  • Если я хранить стандартные изображения во-первых, в Assets Folder и скопировать их в внешнего каталога на первом oppening. И для оффлайн использование изображений с webservice, скачать и сохранить их в в том же каталоге?
  • Должен ли я хранить локальные изображения в чертежах и загружать изображения в внешний каталог устройства?
  • Если я хранить все изображения в SqliteDb, как двоичные данные (которые я не предпочитают из-за производительности)

принять также во внимание, что я хочу, чтобы хранить несколько изображений для разных размеров устройств. Так что на первое отверстие я проверить устройство, с которого drawable folder (xxhdpi, xhdpi, hdpi, mdpi) он принимает изображения как так:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
switch(metrics.densityDpi){ 
       case DisplayMetrics.DENSITY_MEDIUM: 
        break; 
       case DisplayMetrics.DENSITY_HIGH: 
        break; 
       case DisplayMetrics.DENSITY_XHIGH: 
        break; 
       case DisplayMetrics.DENSITY_XXHIGH: 
        break; 
      } 

магазин в какую папке он идет на SharedPreferences так, когда я загрузить изображения с сервиса, он будет идти к специфическому папка с specfic изображения размером из webservice и грейферов их

Что такое лучшая и простая стратегия управления образами в этом случае?

[Примечание: Я не хочу использовать google extension files как данные и изображения могут быть udated часто]

ответ

1

Если я хранить по умолчанию изображения сначала в Assets папку и скопировать их на внешний каталог на первый oppening.И для автономного использования изображений из webservice загрузите и сохраните их в один и тот же каталог?

Нет. Получите их от сервера при запуске приложения и используйте механизм кеширования, поэтому, когда Интернет недоступен, он будет извлекаться из папки кеша. Для этого вы можете использовать библиотеку picasso, которая делает это очень хорошо.

Если я хранить все изображения в SqliteDb, как двоичные данные (которые я не предпочитают из-за производительность)

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

Какова наилучшая и простая стратегия управления изображениями в этом случае?

При вызове службы, чтобы получить растровое изображение, то проверьте плотность устройства затем отправить высоту и ширину на сервере, то ожидать от него, чтобы вернуться в этот размер, как fetchImage? Image_width = ххх & IMAGE_HEIGHT = YYY

+0

В Дело в том, что в то же время я получу другие данные как 'json', где также будут отображаться названия изображений,« вставлять »их в' SqliteDB' устройства, а затем загружать изображения и хранить их на устройстве. Приложение не должно быть пустым данных. Во-первых, БД будет скопирована на устройство из папки с ресурсами, и некоторые изображения также должны быть там. Из вашего объяснения я понимаю, что для использования в автономном режиме я должен использовать механизм chaching, но будет проблемой, если у меня будет много изображений? – hrskrs

+0

@hrskrs Нет, это не должно создавать никаких проблем. Afaik, как это приложение-приложение делает эту вещь –

+0

с 'picasso', если я не ошибаюсь, вы можете скачать изображение за раз. Он не поддерживает несколько изображений. Или, может быть, с циклом это можно решить. Существует [Универсальный загрузчик изображений] (https://github.com/nostra13/Android-Universal-Image-Loader), который из моих исследований выглядит лучше всего для моего случая. И я боюсь, что если пользователь очистит кеш. Данные будут оставлены на SqliteDB, но изображения не будут доступны, я прочитал, что изображения должны храниться во внешнем каталоге при загрузке – hrskrs

Смежные вопросы