2011-10-09 16 views
7

Il progetto su cui sto lavorando ha due app diverse, 1 è server e l'altro è client. L'app server ha 1 classe di servizio, che avvia il thread del server nella funzione onStartCommand(). La classe per il thread del server è definita nella classe di servizio stessa. Ogni volta che il server riceve dati dal client che memorizza nel database. Quindi il problema è che voglio avvisare l'utente che i nuovi dati sono stati ricevuti tramite notifica o messaggio brindisi qualunque sia possibile. Dimmi anche dove scrivere codice per la notifica, se dovrei scrivere in classe di servizio o classe thread o classe firstActivity da cui sto avviando il servizio server. Grazie.Come mostrare la notifica dal servizio in background?

+1

possibile duplicato di [Invio di una notifica da un servizio in Android] (http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android) – Reno

+0

@ Reno: Ho già fatto riferimento a questo post, ma non ho capito dove dovrei inserire quel codice, anche quel codice è incompleto. Sono principiante in Android. – sagar

risposta

3

Sto leggendo questo in modo errato? Sia l'app del server sia l'app del client si trovano sullo stesso dispositivo Android?

In ogni caso, dare un'occhiata a ApiDemos per il codice per le notifiche attraverso un servizio.

E dal momento che probabilmente avremo a che fare con un server remoto (e non locale) e tutti i problemi di latenza associati alla rete, penso che sia meglio racchiudere il servizio in un AsyncTask.

Ulteriori informazioni sui ricevitori di trasmissione, i ricevitori di trasmissione registrati possono essere un ottimo modo per attivare servizi/attività senza la necessità di avere il proprio polling di servizio in un ciclo indefinito.

+0

Grazie! il mio server e la mia app client sono in esecuzione su diversi emulatori, non vi è alcun problema nel trasferimento dei dati e nella loro memorizzazione nel database. Guarderò i ricevitori di radiodiffusione. C'è un modo per rilevare ci sono cambiamenti nella tabella del database? In modo che se le modifiche rilevate posso notificare all'utente dalla classe di attività. – sagar

+0

Come ho detto, ho utilizzato il ricevitore di trasmissione e funziona, ma voglio inviare 1 stringa con trasmissione e visualizzare quella stringa in msg. Ho usato intent.putextra(). ma al ricevitore ricevo il valore nullo, penso che il problema sia nel mio codice aggiuntivo, puoi dirmi come ricevere i dati inviati per intenti broadcast. – sagar

9

Per prima cosa devi leggere questo articolo su come utilizzare Notifications.

Successivamente utilizzare questo per inviare una notifica, è possibile scrivere questo codice nella classe di servizio nel punto in cui si ricevono alcuni dati dal client.

NotificationManager notificationManager = 
    (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
int icon = R.drawable.notification_icon; 
CharSequence notiText = "Your notification from the service"; 
long meow = System.currentTimeMillis(); 

Notification notification = new Notification(icon, notiText, meow); 

Context context = getApplicationContext(); 
CharSequence contentTitle = "Your notification"; 
CharSequence contentText = "Some data has arrived!"; 
Intent notificationIntent = new Intent(this, YourActivityThatYouWantToLaunch.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

int SERVER_DATA_RECEIVED = 1; 
notificationManager.notify(SERVER_DATA_RECEIVED, notification); 
Problemi correlati