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?
risposta
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.
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
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
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);
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
@ 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