Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Vladimir93
36 / 36 / 4
Регистрация: 28.06.2015
Сообщений: 146
#1

Обновление данных один раз в сутки - Программирование Android

28.06.2015, 12:32. Просмотров 518. Ответов 11
Метки нет (Все метки)

Здравствуйте, участники форума. Чувствую что объяснить будет не просто, но я буду стараться.
Суть - конвертер валют, загружает курсы с сайта ЦБ РФ.
Курсы обновляться в 11-30 - 12-00, каждый день.
Требуется - загружать оные только один раз, в сутки.
Т.е. запускаем приложение, первым делом пробуем загрузить курсы с сайта. Тут все просто грузим, сохраняем в SharedPreferences.
И при последующих запусках уже не лезем на сайт а берем из - SharedPreferences.
А вот дальше, с обновлением, у меня возникают затруднения.
Я могу сделать так, что бы автоматически загружать новые курсы при наступлении новых суток (сверяем предыдущую дату и текущую). Но это не подходит, ибо 9 часов утра, это уже новые сутки, а курсы на сайте еще старые.
Т.е. нужно заморачваться с часами, но и тут проблема. Как установиться это самое время в часах?
Если ставить конкретное, то если пользователь не включит приложение допустим с 10 до 12 он не загрузит новые курсы. Если ставить до обеда, или после, то все это время приложение лезет в сеть и пробует обновиться. Теряем смысл сохранения курсов.
Сверять курсы, тоже бесполезно, ибо требуется загрузка актуальных. Опять же теряется смысл сохранения.
Вроде как мог пояснил, знаю трудно бывает понят что пишут. Я буду статься пояснять по ходу обсуждения, если таковое возникнет.))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2015, 12:32     Обновление данных один раз в сутки
Посмотрите здесь:
Android Показать только один раз
Android Почему этот цикл выполняется один раз?
Android Как определить, платил ли пользователь хоть один раз?
Android OnTouch MotionEvent в андроид выполняется только один раз
Загрузить данные один раз с MySQL таблицы в память приложения, и в дальнейшем использовать ее Android
Как создать layout, который запускается один раз, при первом запуске приложения? Android
Обновление данных Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
28.06.2015, 20:19     Обновление данных один раз в сутки #2
Ничо не понял, но отвечу. Делай сервис и AlarmManager. Сервис сам будет ходить на сайт и качать курсы. Частоту обновления можно установить любую.
lvlkoo
.NET C#,ASP.NET MVC
334 / 290 / 101
Регистрация: 16.10.2010
Сообщений: 1,290
Завершенные тесты: 2
28.06.2015, 22:04     Обновление данных один раз в сутки #3
Ну подождите. Вы залезли на сайт, выкачали курсы, записали дату выгрузги. При следующем запуске проверяете, что новый день и время больше 12.00. Или у вас виджет?
Vladimir93
36 / 36 / 4
Регистрация: 28.06.2015
Сообщений: 146
30.06.2015, 09:50  [ТС]     Обновление данных один раз в сутки #4
Цитата Сообщение от Rube Посмотреть сообщение
Делай сервис и AlarmManager. Сервис сам будет ходить на сайт и качать курсы. Частоту обновления можно установить любую.
Теряем смысл сохранения, в том то и суть - не грузить постоянно данные из сети, задача - обновление 1 раз в сутки, причем без предварительной загрузки. А сервис, это еще и расход ресурсов, для простого конвертера - непростительная роскошь.
Цитата Сообщение от lvlkoo Посмотреть сообщение
При следующем запуске проверяете, что новый день и время больше 12.00.
Именно так я и делал, но возникает проблема, приложение после 12 начинает обновляться при каждом включении.
Нужно еще какое то дополнительное условие. Т.е. если приложение запущено после 12 нужно проверить, обновлено ли оно, и если да, то больше не обновлять, а если нет - обновить. Вот тут у меня и проблема. Не знаю как это реализовать.
lvlkoo
.NET C#,ASP.NET MVC
334 / 290 / 101
Регистрация: 16.10.2010
Сообщений: 1,290
Завершенные тесты: 2
30.06.2015, 10:06     Обновление данных один раз в сутки #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Vladimir93 Посмотреть сообщение
Именно так я и делал, но возникает проблема, приложение после 12 начинает обновляться при каждом включении.
Нужно еще какое то дополнительное условие. Т.е. если приложение запущено после 12 нужно проверить, обновлено ли оно, и если да, то больше не обновлять, а если нет - обновить. Вот тут у меня и проблема. Не знаю как это реализовать.
Ключевая фраза в моем посте выше - "вы записали дату выгрузки". К примеру это 29.06.2015
Соотвественно запуская приложение 30.06.2015 - проверяете на то что наступил новый день, затем проверяете на то, что уже 12:00 - если условие истина тогда делаете обновление, соостветсвенно после этого обновления опять записываете дату (30.06.2015). При следующем запуске приложение 30 числа условие выполняться не будет! Уловили мысль?
Vladimir93
36 / 36 / 4
Регистрация: 28.06.2015
Сообщений: 146
30.06.2015, 12:02  [ТС]     Обновление данных один раз в сутки #6
Дааа. Что то стало проясняться, но еще не до конца. Попробую.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
30.06.2015, 13:14     Обновление данных один раз в сутки #7
Цитата Сообщение от Vladimir93 Посмотреть сообщение
А сервис, это еще и расход ресурсов, для простого конвертера - непростительная роскошь.
Какой расход ресурсов, вы о чем? Сервис запускается только для загрузки данных, отработал - отключается. Запускаем его из AlarmManager, тоже никаких расходов. Курс обновился - вылез Notification, пользователь глянул - о, какая прога, сама курсы качает, молодец какой Vladimir93!
А так - просто поделка.
Vladimir93
36 / 36 / 4
Регистрация: 28.06.2015
Сообщений: 146
01.07.2015, 09:58  [ТС]     Обновление данных один раз в сутки #8
Rube,А когда запускаем AlarmManager? Вот к примеру запускаем AlarmManager, а в это время сети нет, и нет возможности обновиться. Что делать?
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.07.2015, 11:01     Обновление данных один раз в сутки #9
Vladimir93,
Цитата Сообщение от Vladimir93 Посмотреть сообщение
а в это время сети нет
Иметь ресивер на получение изменения состояния сети
Vladimir93
36 / 36 / 4
Регистрация: 28.06.2015
Сообщений: 146
01.07.2015, 11:50  [ТС]     Обновление данных один раз в сутки #10
А как потом AlarmManager запустить? Время то ушло. Другими словами AlarmManager - сработал в назначенное время, но обновить не получилось.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.07.2015, 11:55     Обновление данных один раз в сутки #11
Vladimir93, при апдейте данных записывать в SharedPreferences время текущее.
При появлении интернета (событие в броадкасте) смотреть в эту дату. Если больше суток, то апдейтить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 13:09     Обновление данных один раз в сутки
Еще ссылки по теме:
Обновление данных в activity Android
Android Обновление данных приложения
Android Обновление данных в ArrayAdapter
Android ExpandableListView обновление данных
Обновление данных адаптера Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.07.2015, 13:09     Обновление данных один раз в сутки #12
Я записываю время следующего запуска.
Yandex
Объявления
01.07.2015, 13:09     Обновление данных один раз в сутки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru