Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,876
Записей в блоге: 3
#1

Запрос на сервер каждые несколько секунд

23.12.2015, 15:57. Просмотров 795. Ответов 10
Метки нет (Все метки)

Как лучше это реализовать?

- Простым таймером?
- Service?
- или ?

в случае сервиса мне не понятно как сделать так чтобы каждые несколько секунд срабатывал метод сервиса - опять нужно использовать таймер внутри сервиса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2015, 15:57
Ответы с готовыми решениями:

Приостановить приложение на несколько секунд
Здравствуйте. В приложении после нажатии на кнопку - кнопки должны пропадать, а...

Задержка выполнения кода на несколько секунд
Здравствуйте. Как прервать выполнение кода на некоторое количество секунд? Ну...

Android studio - программа зависает после нажатия на несколько секунд
Привет написал простую прогу для офис при нажатии на кнопку отправляется...

один сервер несколько клиентов
Всем привет) написала простую сервер-клиент программку (udp), теперь нужно...

POST - запрос на сервер
Суть задачи: при нажатии на кнопку пост-запросом отправляется переменная со...

10
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
23.12.2015, 20:16 #2
1) интернет-запрос может в легкую быть секунд 15 или больше. что Вы будете делать, если пройдут "несколько секунд", а прошлый запрос еще не получит ответ?
2) нужно ли что бы запросы шли в тот момент, когда программа не работает (не на переднем плане)?

handler с таймаутом. примерно как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
private Handler myHandler = new Handler();
...
myHandler.post(runIt);
...
private Runnable runIt = new Runnable()
{
    @Override
    public void run()
    {
        //do some here
        myHandler.postDelayed(runIt, 5000); //5sec
    }
};
1
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,876
Записей в блоге: 3
23.12.2015, 20:51  [ТС] #3
Цитата Сообщение от bastrakov Посмотреть сообщение
интернет-запрос может в легкую быть секунд 15 или больше. что Вы будете делать, если пройдут "несколько секунд", а прошлый запрос еще не получит ответ?
Этот случай думаю исправим тем что если первый запрос еще не прошел то второй не начнется..

Цитата Сообщение от bastrakov Посмотреть сообщение
нужно ли что бы запросы шли в тот момент, когда программа не работает (не на переднем плане)?
нет
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
23.12.2015, 23:48 #4
ILNAR_93, а можно дурацкий вопрос? Зачем делать запрос каждые несколько секунд?оО
0
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,876
Записей в блоге: 3
24.12.2015, 08:17  [ТС] #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
Зачем делать запрос каждые несколько секунд?
чтобы узнать изменился ли статус заказа
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
24.12.2015, 08:29 #6
Цитата Сообщение от YuraAAA Посмотреть сообщение
а можно дурацкий вопрос? Зачем делать запрос каждые несколько секунд?оО
Причин может быть уйма! чат, проверка статуса заказа, проверка почты, подтверждение доставки, трекинг машины/человека по городу...

Цитата Сообщение от ILNAR_93 Посмотреть сообщение
в случае сервиса мне не понятно как сделать так чтобы каждые несколько секунд срабатывал метод сервиса - опять нужно использовать таймер внутри сервиса?
если это происходит в сервисе (логичнее) то твое активити может просто "превызывать"/перезапускать сервис по таймеру в активити (два одинаковых сервиса не запустятся). А тот уже пусть решает - имеет ли смысл переотправлять или дождаться ответа.
Можно попробовать в потоке запустить... но там надо будет синхронизацию и общение наладить...

Но это только для работы "пока программа открыта"
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
24.12.2015, 09:58 #7
ILNAR_93, не проше ли послать пуш, когда статус изменился и не насиловать батарею?
1
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,876
Записей в блоге: 3
24.12.2015, 10:06  [ТС] #8
Цитата Сообщение от Spelcrawler Посмотреть сообщение
не проше ли послать пуш
Возможно.

Цитата Сообщение от Spelcrawler Посмотреть сообщение
и не насиловать батарею
не думаю что батарейка так сильно будет насиловаться.. т.к. приложение будут запускать от силы 2-4 раза в день на 3-5 минут максимум..

Не по теме:

пушы опять лишние затраты как времени так и финансов (бесплатные есть - но наверное кол-во уведомлений подрезано)

0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
24.12.2015, 10:10 #9
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
бесплатные есть - но наверное кол-во уведомлений подрезано
От гугла полностью бесплатно. Ограничение на количество юзеров в топиках (это как бы группы на которые подписываешь устройство и рассылаешь 1 сообщение сразу всей группе) 1 000 000.
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
приложение будут запускать от силы 2-4 раза в день на 3-5 минут максимум.
Получается оно не будет долбиться на сервер прям вообще всегда? Только пару минут после действия? Если так то можно и постоянно запрашивать с сервера самому.
1
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,876
Записей в блоге: 3
24.12.2015, 10:13  [ТС] #10
Цитата Сообщение от Spelcrawler Посмотреть сообщение
От гугла полностью бесплатно.
Не знал! Спасибо за наводку))

Цитата Сообщение от Spelcrawler Посмотреть сообщение
Получается оно не будет долбиться на сервер прям вообще всегда?
нет не будет, только когда приложение запущено и пользователь совершил некоторые действия
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
24.12.2015, 11:57 #11
ILNAR_93, Tester64,
Цитата Сообщение от Tester64 Посмотреть сообщение
Причин может быть уйма! чат, проверка статуса заказа, проверка почты, подтверждение доставки, трекинг машины/человека по городу...
для всего этого есть push notification, у google это Google Cloud Messaging. А запрос каждые несколько секунд - антипаттерн
1
24.12.2015, 11:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2015, 11:57

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

Как сделать Http запрос на сервер
Ребят подскажите как правильно сделать get запрос. Пытаюсь так: ...

Реализовать простой post запрос на php сервер
Приветствую. Хотелось бы пример, но не от балды. В гугле есть вагон примеров,...


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

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

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