Respuesta

9

Usted no necesita un servicio. Me siento como un disco roto. En este caso de uso, un servicio se sentará allí el 95% del tiempo sin hacer nada, pero aún utilizando los recursos del sistema y, lo que es más importante, drenará la batería.

Véase mi respuesta en una pregunta similar que utiliza una alarma de la AlarmManager:

Running task periodicaly(once a day/once a week)

Editar:

mirada a este tutorial desde el sitio de desarrollo de Android para la forma de aplicar las notificaciones: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

+0

sí. esa es la forma correcta. – njzk2

+0

Graham, entonces habrá una aplicación .apk dedicada solo para mostrar la notificación ??? –

+0

Puede poner todo su código en el proyecto individual y desplegarlo como un único APK. –

0

Define un servicio, que tiene un hilo con un temporizador, en el tiempo de espera invoque el servicio web.

+1

mismo comentario que a continuación. – njzk2

2

temporizador de uso en los que se puede llamar a ese servicio web después de intervalo finito de e.x

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. 

Aquí 20000 medios después de cada 20 segundos que se verán afectados.

+1

un hilo definitivamente no es el camino a seguir para esto en Android. Se quedará allí en la memoria sin hacer nada, eso no es bueno. use alarmmanager en su lugar – njzk2

6

Hay un servicio de mensajería de nube a dispositivo proporcionado por Google C2DM. Puede usar este servicio para enviar mensajes a todos los dispositivos móviles registrados. Esto no solo mejora el rendimiento sino que también garantiza que la batería no se agote mientras se realiza una encuesta continua del servidor.

Para su escenario, puede escribir en una clase java para sondear regularmente el servicio web y usar el servicio C2DM para enviar el mensaje a su teléfono Android que se puede mostrar como una notificación. Mira este tutorial de Vogella en link. O mejor, si está utilizando el servicio web solo para obtener detalles actualizados, puede evitar el servicio web y llamar directamente al Servicio de inserción de C2DM para enviar mensajes a todos los dispositivos registrados cada vez que haya un cambio.

Espero que esto haya ayudado. :)

+2

Para futuros buscadores: C2DM ha sido desaprobado y reemplazado por GCM: http://developer.android.com/guide/google/gcm/index.html; Guía de migración: http://developer.android.com/guide/google/gcm/c2dm.html – paul

+0

Para futuras referencias futuras, GCM ahora es FCM (Firebase Cloud Messaging). Aquí hay una guía de migración: https://developers.google.com/cloud-messaging/android/android-migrate-fcm –

Cuestiones relacionadas