2013-06-25 1 views
0

Мое приложение требует загрузки большого количества изображений с сервера (каждое изображение размером около 10 КБ). И я просто загружаю каждый из них с независимым AsyncTask без какой-либо оптимизации.Обычная практика сжатия изображения перед отправкой на мобильное устройство?

Теперь мне интересно, какая распространенная практика для передачи этих изображений. Например, я собираюсь сохранить заархивированные изображения на сервере, а затем отправить zip-файл для мобильного телефона для распаковки. В этом случае лучше ли комбинировать zip-файлы в один большой zip-файл для загрузки?

Или есть лучшее решение? Заранее спасибо!

EDIT:

кажется сочетание архивных файлов является хорошей идеей, но я чувствую, что это может занять слишком много времени для пользователя, чтобы ждать загрузки и распаковки всех изображений. Поэтому я могу разместить десять или двадцать изображений в каждом zip-файле, поэтому пользователь может увидеть некоторые загруженные, ожидая еще большего. Имея несколько AsyncTask, работающих вместе, можно работать быстрее? Но они не смогут закончить одновременно с тем же размером файла и тем же адресом для загрузки?

ответ

1

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

0

Изображения, возможно, уже сжаты (gif, jpg, png). Вы не уменьшите размер файла, но уменьшите количество подключений. Это хорошая идея для мобильных устройств. Если это всегда один и тот же набор изображений, вы можете использовать некоторую технологию спрайтов (отправка одного большего файла изображения, содержащего все изображения, но с другим смещением x/y, в html вы можете использовать задний план со смещением, чтобы показать правильное изображение).

+0

спасибо!но я боюсь, что изображения все время загружаются или изменяются пользователем. – Arch1tect

0

Я смотрел боковую панель и видел this тему, но вы спрашиваете о том, как исправлять, когда я видел комментарии.

Лучший способ убедиться, что пользователь знает, что с ним делать. Вы хотите, чтобы пользователь загружал X-файл и имел выходной Y для другой цели. С другой стороны, кажется, что обычной практикой является то, что куски ресурсов для тех, кто не является родным для Android-приложения и не в состоянии вписаться в APK.

Сравнимым примером является приложение JDIC, ​​в котором используется популярный японский ресурс, который используется в тандеме для перевода на английский язык. Приложения JDIC, ​​такие как WWWJDIC, ​​используют онлайн-загрузки для чрезвычайно больших файлов ссылок, которые в противном случае имели бы плохую задержку (которая упоминалась ранее) на серверах Google. Также неплохо было бы иметь> 200 МБ в приложениях Google, если это не 3D, что оправдано. Если ваши изображения не могут быть сжаты без чрезмерного времени загрузки самого приложения, возможно, вам придется рассмотреть этот вариант. Единственным недостатком является запрос онлайн-соединения (также упоминалось ранее).

Кроме того, вы можете использовать 7zip и программу Android для самораспаковывания его в нужное место. http://www.wikihow.com/Use-7Zip-to-Create-Self-Extracting-excutables

С другой стороны, было бы оптимально, если бы пользователь выполнял обычные проверки приложения при одновременной загрузке при первоначальном запуске. Затем вы можете добавить AsyncTask, чтобы ваши файлы были загружены в приложение и использовались после перезагрузки или, тем не менее, вам нужны, поэтому вам действительно нужно только одно AsyncTask. Преимущество этого в том, что пользователь синхронизирует приложения, и ему может потребоваться проверить только один раз. Недостатком является то, что пользователь не всегда может обновлять и, возможно, потребуется использовать 4G или LTE, но это незначительная проблема, если он может использовать WiFi, когда захочет.