Модуль AppUpdate
Содержит функции проверки обновлений и их загрузки, зависит от библиотек NetworkModule и UtilsModule. Проверка обновлений осуществляется с помощью Volley в NetworkModule, а загрузка — через DownloadModule. Предоставляет некоторые стандартные формы пользовательского интерфейса (UI), но также позволяет полностью настроить его, реализовав соответствующие прослушиватели событий.
Demo: http://git.oschina.net/bvin/AndroidTest_Update
Описание
Используется библиотека UtilsModule, которая содержит ToastUtils для отображения некоторых сообщений о состоянии, StringUtils для работы со строками в формате URL и методы для получения версии приложения.
Проверка обновлений выполняется с помощью метода UpdateManager.checkVersion(String url, Map<String, Object> params, CheckListener checkListener). Здесь url — это адрес интерфейса для проверки обновлений, params — параметры для проверки обновления (для совместимости с различными интерфейсами могут потребоваться дополнительные данные, такие как идентификатор пользователя или текущая версия), а checkListener — слушатель состояния проверки обновлений. Если он не указан, будет использоваться стандартный вид UI. При необходимости можно реализовать собственный UI, реализовав этот слушатель. В нём можно создать собственный стиль UI.
Модель информации об обновлении (cn.bvin.lib.module.update.UpdateInfo):
DBUpdateInfo — класс, наследуемый от UpdateInfo, который может содержать базовую информацию о версии обновления в некоторых интерфейсах проверки обновлений.
Класс CheckRequest, наследующий Request, имеет два основных параметра: объект WrapRequest, содержащий адрес запроса и параметры, и слушатель для отслеживания состояния проверки обновлений:
@Override
protected void deliverResponse(UpdateInfo arg0) {
if (arg0!=null&&checkListener!=null) {
//передача результата ответа
this.checkListener.onCheckSuccess(arg0);
}
}
@Override
public byte[] getBody() throws AuthFailureError {
//если есть параметры, то преобразуем их
if (wrapRequest!=null&&wrapRequest.getParam()!=null) {
//рекомендуется использовать формат MapParams
if (wrapRequest.getParam().getMapParams()!=null) {
return wrapRequest.getParam().getBytes();
}
}
return super.getBody();
}
DefaultCheckRequest — реализация по умолчанию для преобразования содержимого ответа интерфейса в объект UpdateInfo. Может быть реализована при необходимости, так как форматы данных в разных интерфейсах могут различаться.
Слушатель CheckListener для асинхронной проверки обновлений является абстрактным классом. Для обеспечения частичной реализации интерфейса и совместимости с классами Request и ErrorListener в Volley, рекомендуется использовать интерфейс вместо класса extends, который допускает только одно наследование.
/**
* начало проверки обновлений, это длительный сетевой запрос
* @param context используется для получения номера версии приложения
* @param url адрес интерфейса проверки обновлений
* @param param параметры, необходимые для интерфейса обновления
*/
public abstract void onCheckStart(Context context, String url, RequestParam param);
/**
* проверка обновлений прошла успешно
* @param updateInfo информация, полученная с сервера
*/
public abstract void onCheckSuccess(UpdateInfo updateInfo);
/**
* ошибка при проверке обновлений
* @param e причина ошибки
*/
public abstract void onCheckFailure(Throwable e);
DefaultCheckListener реализует функциональность сравнения версий на основе CheckListener:
**
* обнаружена новая версия, версия сервера больше версии приложения
* @param updateInfo информация об обновлении
*/
public abstract void onUpdateFound(UpdateInfo updateInfo);
/**
* новая версия не найдена, текущая установленная версия является последней версией
*/
public abstract void onUpdateNotfoud();
Использование
UpdateManager.with(Context) .checkVersion(url,Map<String, Object>,DataConvertor convertor) .listenUpdateConfirm(UpdateConfirmListener listener);
UpdateManager.with(Context): возвращает экземпляр UpdateManager через Context. checkVersion(адрес запроса, map параметров, преобразователь интерфейса данных) .listenUpdateConfirm(слушатель UpdateConfirmListener) для прослушивания подтверждения обновления.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )