Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Vladimir93
78 / 77 / 14
Регистрация: 28.06.2015
Сообщений: 322
1

Обновление данных один раз в сутки

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

Здравствуйте, участники форума. Чувствую что объяснить будет не просто, но я буду стараться.
Суть - конвертер валют, загружает курсы с сайта ЦБ РФ.
Курсы обновляться в 11-30 - 12-00, каждый день.
Требуется - загружать оные только один раз, в сутки.
Т.е. запускаем приложение, первым делом пробуем загрузить курсы с сайта. Тут все просто грузим, сохраняем в SharedPreferences.
И при последующих запусках уже не лезем на сайт а берем из - SharedPreferences.
А вот дальше, с обновлением, у меня возникают затруднения.
Я могу сделать так, что бы автоматически загружать новые курсы при наступлении новых суток (сверяем предыдущую дату и текущую). Но это не подходит, ибо 9 часов утра, это уже новые сутки, а курсы на сайте еще старые.
Т.е. нужно заморачваться с часами, но и тут проблема. Как установиться это самое время в часах?
Если ставить конкретное, то если пользователь не включит приложение допустим с 10 до 12 он не загрузит новые курсы. Если ставить до обеда, или после, то все это время приложение лезет в сеть и пробует обновиться. Теряем смысл сохранения курсов.
Сверять курсы, тоже бесполезно, ибо требуется загрузка актуальных. Опять же теряется смысл сохранения.
Вроде как мог пояснил, знаю трудно бывает понят что пишут. Я буду статься пояснять по ходу обсуждения, если таковое возникнет.))
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2015, 12:32
Ответы с готовыми решениями:

Обновить переменную раз в сутки
Как обновить переменную раз в сутки ,при входе программы?

Обновление данных в txt файле раз в сутки
есть файл file.txt с числом внутри. пытаюсь вот таким вот кодом увеличить число в файле $counter...

Выполнение кода один раз в сутки
Мне очень нужен пример кода, где функция выполняется одни раз в сутки. Например зашли в программу,...

Прокрутка страницы только один раз в сутки
Задача: при наведении курсора мыши на кнопку - максимально быстро скроллим страницу вверх на...

Как реализвать голосование таким образом, чтобы человек мог голосовать один раз в сутки?
Вопрос собственно такой, как реализвать голосование таким образом, чтобы человек мог голосовать...

11
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,079
28.06.2015, 20:19 2
Ничо не понял, но отвечу. Делай сервис и AlarmManager. Сервис сам будет ходить на сайт и качать курсы. Частоту обновления можно установить любую.
0
lvlkoo
.NET C#,ASP.NET MVC
Эксперт .NET
577 / 490 / 223
Регистрация: 16.10.2010
Сообщений: 1,898
Завершенные тесты: 2
28.06.2015, 22:04 3
Ну подождите. Вы залезли на сайт, выкачали курсы, записали дату выгрузги. При следующем запуске проверяете, что новый день и время больше 12.00. Или у вас виджет?
0
Vladimir93
78 / 77 / 14
Регистрация: 28.06.2015
Сообщений: 322
30.06.2015, 09:50  [ТС] 4
Цитата Сообщение от Rube Посмотреть сообщение
Делай сервис и AlarmManager. Сервис сам будет ходить на сайт и качать курсы. Частоту обновления можно установить любую.
Теряем смысл сохранения, в том то и суть - не грузить постоянно данные из сети, задача - обновление 1 раз в сутки, причем без предварительной загрузки. А сервис, это еще и расход ресурсов, для простого конвертера - непростительная роскошь.
Цитата Сообщение от lvlkoo Посмотреть сообщение
При следующем запуске проверяете, что новый день и время больше 12.00.
Именно так я и делал, но возникает проблема, приложение после 12 начинает обновляться при каждом включении.
Нужно еще какое то дополнительное условие. Т.е. если приложение запущено после 12 нужно проверить, обновлено ли оно, и если да, то больше не обновлять, а если нет - обновить. Вот тут у меня и проблема. Не знаю как это реализовать.
0
30.06.2015, 09:50
lvlkoo
.NET C#,ASP.NET MVC
Эксперт .NET
577 / 490 / 223
Регистрация: 16.10.2010
Сообщений: 1,898
Завершенные тесты: 2
30.06.2015, 10:06 5
Лучший ответ Сообщение было отмечено Vladimir93 как решение

Решение

Цитата Сообщение от Vladimir93 Посмотреть сообщение
Именно так я и делал, но возникает проблема, приложение после 12 начинает обновляться при каждом включении.
Нужно еще какое то дополнительное условие. Т.е. если приложение запущено после 12 нужно проверить, обновлено ли оно, и если да, то больше не обновлять, а если нет - обновить. Вот тут у меня и проблема. Не знаю как это реализовать.
Ключевая фраза в моем посте выше - "вы записали дату выгрузки". К примеру это 29.06.2015
Соотвественно запуская приложение 30.06.2015 - проверяете на то что наступил новый день, затем проверяете на то, что уже 12:00 - если условие истина тогда делаете обновление, соостветсвенно после этого обновления опять записываете дату (30.06.2015). При следующем запуске приложение 30 числа условие выполняться не будет! Уловили мысль?
1
Vladimir93
78 / 77 / 14
Регистрация: 28.06.2015
Сообщений: 322
30.06.2015, 12:02  [ТС] 6
Дааа. Что то стало проясняться, но еще не до конца. Попробую.
0
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,079
30.06.2015, 13:14 7
Цитата Сообщение от Vladimir93 Посмотреть сообщение
А сервис, это еще и расход ресурсов, для простого конвертера - непростительная роскошь.
Какой расход ресурсов, вы о чем? Сервис запускается только для загрузки данных, отработал - отключается. Запускаем его из AlarmManager, тоже никаких расходов. Курс обновился - вылез Notification, пользователь глянул - о, какая прога, сама курсы качает, молодец какой Vladimir93!
А так - просто поделка.
0
Vladimir93
78 / 77 / 14
Регистрация: 28.06.2015
Сообщений: 322
01.07.2015, 09:58  [ТС] 8
Rube,А когда запускаем AlarmManager? Вот к примеру запускаем AlarmManager, а в это время сети нет, и нет возможности обновиться. Что делать?
0
YuraAAA
1591 / 1327 / 287
Регистрация: 25.10.2009
Сообщений: 3,458
Записей в блоге: 2
01.07.2015, 11:01 9
Vladimir93,
Цитата Сообщение от Vladimir93 Посмотреть сообщение
а в это время сети нет
Иметь ресивер на получение изменения состояния сети
0
Vladimir93
78 / 77 / 14
Регистрация: 28.06.2015
Сообщений: 322
01.07.2015, 11:50  [ТС] 10
А как потом AlarmManager запустить? Время то ушло. Другими словами AlarmManager - сработал в назначенное время, но обновить не получилось.
0
YuraAAA
1591 / 1327 / 287
Регистрация: 25.10.2009
Сообщений: 3,458
Записей в блоге: 2
01.07.2015, 11:55 11
Vladimir93, при апдейте данных записывать в SharedPreferences время текущее.
При появлении интернета (событие в броадкасте) смотреть в эту дату. Если больше суток, то апдейтить.
1
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,079
01.07.2015, 13:09 12
Я записываю время следующего запуска.
0
01.07.2015, 13:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 13:09

Сброс данных раз в сутки
Здравствуйте, у меня имеется несколько вопросов: 1.Как сделать, чтобы данные в MySQL сбрасывались...

Автоматическое изменения значения в базе данных раз в сутки
Здравствуйте! Столкнулся с такой проблемой. Есть сайт, написанный на джумле, на котором есть...

Разработать командный файл, который запускал бы какой-либо файл один раз в сутки
Помогите пожалуйста! Разработать командный файл, который бы запускал бы какой-либо файл один раз в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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