Загрузите новый ресурс с сервера: какова лучшая практика? - PullRequest
0 голосов
/ 05 марта 2012

Мое приложение загружает некоторые ресурсы с моего сервера с помощью AsyncTask, и я помещаю их в папку на SD-карте.Затем я использую эти активы в своих фонах кнопок.Все работает, но мне интересно, какую наилучшую практику использовать при смене ресурсов на стороне сервера.На самом деле, в настоящий момент я не могу знать, является ли ресурс сервера новым по сравнению с тем, который хранится локально.Однако я думал о двух возможных решениях: 1) Приложение проверяет сервер на наличие новых файлов, например, два раза в день.Если есть новые файлы, загрузите их и обновите хранилище локально.В этом случае: как я могу получить разницу во времени между локальным файлом и файлом сервера?Другими словами, как я могу узнать, что серверный ресурс является новым по сравнению с локальным?2) Сервер отправляет уведомление клиенту, когда доступен новый файл.Как я могу справиться с этим?

Каков наилучший выбор между двумя выше?

Ответы [ 4 ]

1 голос
/ 05 марта 2012

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

Вы также должны сохранять номер версии при получении ресурсов с сервера.

1 голос
/ 05 марта 2012

Я думаю, что вариант 2) («сервер отправляет уведомление клиенту, когда новый файл доступен») потребует запуска службы на клиенте, чтобы «прослушать» уведомление -> Это перебор

То, что я бы сделал, аналогично вашему варианту 1), за исключением того, что оно не зависит от часов клиента и сервера:

Версия ваших ресурсов и хранилище:

  • На сервересторона, в txt или xml файле, последняя версия каждого актива, доступного на сервере
  • На стороне клиента текущая версия каждого актива номер версии последней

На стороне клиента вы затем периодически извлекаете файл txt / xml и определяете, нужно ли вам загружать новые ресурсы.

0 голосов
/ 05 марта 2012

Добавьте version file на свой сервер, что-то простое, например, вот так:

version.txt:

image001.bmp 3
image002.bmp 1
image003.bmp 1

Вы можете загрузить этот файл первым делом, когда подключитесь к серверу и проанализируете его. Затем, если вы заметили более новую версию на сервере, загрузите обновленные файлы.

0 голосов
/ 05 марта 2012

Вы можете добавить некоторый код на сервер для вычисления суммы MD5 файла, а затем из приложения Android сделать запрос, например, на. http://hostname/getMD5?file=myfile.abc, и, если сумма MD5 отличается от локальной, загрузите файл снова.

Что касается уведомления по телефону, я не думаю, что это возможно. Но это может быть нормально опрашивать каждые 30 минут или около того, так как вам нужно только получить короткую строку.

...