Как опросить веб-сервис с конечным интервалом с Android?

Я разрабатываю приложение для Android для отображения уведомлений. Как я могу опросить веб-службу с конечным интервалом (скажем, с интервалом 10 минут), чтобы проверить наличие обновлений и показать их как уведомление на панели уведомлений Android.


person soumitra chatterjee    schedule 10.02.2012    source источник


Ответы (4)


Вам не нужна услуга. Я чувствую себя заезженной пластинкой. В этом случае служба будет сидеть там 95% времени, ничего не делая, но по-прежнему используя системные ресурсы и, что более важно, разряжая батарею.

См. мой ответ на аналогичный вопрос, в котором используется сигнализация из AlarmManager:

Периодическое выполнение задачи (раз в день/раз в неделю)

Редактировать:

Посмотрите этот учебник на сайте Android Development, чтобы узнать, как реализовать уведомления: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

person Graham Smith    schedule 10.02.2012
comment
Вы можете поместить весь свой код в один проект и развернуть его как один APK. - person Graham Smith; 10.02.2012
comment
Многие устройства будут создавать проблемы для периодических фоновых задач, которые не являются службами, из-за встроенных в них настроек экономии заряда батареи. - person elig; 31.10.2020

Существует служба обмена сообщениями из облака на устройство, предоставляемая Google C2DM. Вы можете использовать эту услугу для отправки сообщения на все зарегистрированные мобильные устройства. Это не только повышает производительность, но и гарантирует, что батарея не разрядится при постоянном опросе сервера.

Для вашего сценария вы можете написать в классе java, чтобы регулярно опрашивать веб-службу и использовать службу C2DM для отправки сообщения на ваш телефон Android, которое может отображаться как уведомление. Ознакомьтесь с этим руководством от Vogella по ссылке. Или, что еще лучше, если вы используете веб-службу только для получения обновленных сведений, вы можете не использовать веб-службу и напрямую вызывать службу C2DM Push, чтобы отправлять сообщения на все зарегистрированные устройства всякий раз, когда происходит изменение.

Надеюсь, это помогло. :)

person Richie    schedule 10.02.2012
comment
Для будущих искателей: C2DM устарел и заменен GCM: developer.android.com /guide/google/gcm/index.html; Руководство по миграции: developer.android.com/guide/google/gcm/c2dm.html. - person paul; 22.08.2012
comment
Для дальнейшего использования GCM теперь называется FCM (Firebase Cloud Messaging). Вот руководство по миграции: developers.google.com/cloud-messaging/ андроид/ - person Viv; 19.10.2017

используйте таймер, в котором вы можете вызывать эту веб-службу после конечного интервала, например

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 секунд он будет срабатывать.

person Sumant    schedule 10.02.2012
comment
поток определенно не подходит для этого в Android. Он будет сидеть в памяти, ничего не делая, это нехорошо. вместо этого используйте аварийный менеджер - person njzk2; 10.02.2012

Определите службу, имеющую поток с таймером, по тайм-ауту вызывающий веб-службу.

person jeet    schedule 10.02.2012