risposta

9

non è necessario un servizio. Mi sento come un disco rotto. In questo caso d'uso, un servizio si terrà lì per il 95% del tempo senza fare altro, ma utilizzando ancora risorse di sistema e, soprattutto, drenare la batteria.

Si prega di vedere la mia risposta su una questione analoga che utilizza un allarme dal AlarmManager:

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

Edit:

Guardate questo tutorial dal sito di sviluppo di Android per come implementare le notifiche: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

+0

sì. questo è il modo giusto – njzk2

+0

Graham, quindi ci sarà un apk dedicato .apk solo per mostrare la notifica ??? –

+0

È possibile inserire tutto il codice nel singolo progetto e distribuirlo come un singolo APK. –

0

Definire un servizio, con un thread con un timer, su timeout richiamare il servizio web.

+1

stesso commento come di seguito. – njzk2

2

uso del timer, in cui è possibile chiamare per quel servizio web dopo intervallo finito per 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. 

Qui 20000 mezzo dopo ogni 20 secondi verrà colpito.

+1

un thread non è sicuramente la strada da percorrere per questo in Android. Si siederà lì nella memoria senza fare niente, non va bene. utilizzare l'alarmmanager invece – njzk2

6

Esiste un servizio di messaggistica da dispositivo cloud fornito da Google C2DM. È possibile utilizzare questo servizio per inviare messaggi a tutti i dispositivi mobili registrati. Questo non solo migliora le prestazioni, ma assicura anche che la batteria non venga scaricata mentre esegue il polling continuo del server.

Per lo scenario, è possibile scrivere in una classe java per eseguire regolarmente il polling del servizio Web e utilizzare il servizio C2DM per inviare il messaggio al telefono Android che può essere visualizzato come notifica. Dai un'occhiata a questo tutorial di Vogella su link. O meglio, se si utilizza il servizio Web solo per recuperare i dettagli aggiornati, è possibile evitare il servizio Web e chiamare direttamente il servizio Push C2DM per inviare messaggi a tutti i dispositivi registrati ogni volta che viene apportata una modifica.

Spero che questo abbia aiutato. :)

+2

Per i futuri utenti: C2DM è stato deprecato e sostituito da GCM: http://developer.android.com/guide/google/gcm/index.html; Guida alla migrazione: http://developer.android.com/guide/google/gcm/c2dm.html – paul

+0

Per ulteriori riferimenti futuri, GCM ora è FCM (Firebase Cloud Messaging). Ecco una guida alla migrazione: https://developers.google.com/cloud-messaging/android/android-migrate-fcm –