Я разрабатываю приложение для Android для отображения уведомлений. Как я могу опросить веб-службу с конечным интервалом (скажем, с интервалом 10 минут), чтобы проверить наличие обновлений и показать их как уведомление на панели уведомлений Android.
Как опросить веб-сервис с конечным интервалом с Android?
Ответы (4)
Вам не нужна услуга. Я чувствую себя заезженной пластинкой. В этом случае служба будет сидеть там 95% времени, ничего не делая, но по-прежнему используя системные ресурсы и, что более важно, разряжая батарею.
См. мой ответ на аналогичный вопрос, в котором используется сигнализация из AlarmManager:
Периодическое выполнение задачи (раз в день/раз в неделю)
Редактировать:
Посмотрите этот учебник на сайте Android Development, чтобы узнать, как реализовать уведомления: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Существует служба обмена сообщениями из облака на устройство, предоставляемая Google C2DM. Вы можете использовать эту услугу для отправки сообщения на все зарегистрированные мобильные устройства. Это не только повышает производительность, но и гарантирует, что батарея не разрядится при постоянном опросе сервера.
Для вашего сценария вы можете написать в классе java, чтобы регулярно опрашивать веб-службу и использовать службу C2DM для отправки сообщения на ваш телефон Android, которое может отображаться как уведомление. Ознакомьтесь с этим руководством от Vogella по ссылке. Или, что еще лучше, если вы используете веб-службу только для получения обновленных сведений, вы можете не использовать веб-службу и напрямую вызывать службу C2DM Push, чтобы отправлять сообщения на все зарегистрированные устройства всякий раз, когда происходит изменение.
Надеюсь, это помогло. :)
используйте таймер, в котором вы можете вызывать эту веб-службу после конечного интервала, например
Timer waitingTimer = new Timer();
waitingTimer.schedule(new TimerTask()
{
@Override
public void run()
{
runOnUiThread(new Runnable()
{
public void run()
{
// code to hit xml after time interval
}
});
}
},0,20000); // mention time interval after which your xml will be hit.
Здесь 20000 означает, что каждые 20 секунд он будет срабатывать.
Определите службу, имеющую поток с таймером, по тайм-ауту вызывающий веб-службу.