Autore Topic: CHIARIMENTI SU SERVICE  (Letto 1182 volte)

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
CHIARIMENTI SU SERVICE
« il: 04 Luglio 2012, 13:56:11 CEST »
0
CIAO RAGAZZI ho alcuni dubbi sui service. Essi girano nello stesso processo di chi li crea, ma le loro azioni girano su  un thread diverso ? posso aggiornare l interfaccia grafica dal servizio ? tramite IBInder l attività cliente puo fare richieste al servizio, ma se il servizio vuole comunicare un valore calcolato all attività come si fa ?

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:CHIARIMENTI SU SERVICE
« Risposta #1 il: 04 Luglio 2012, 14:27:49 CEST »
+1

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:CHIARIMENTI SU SERVICE
« Risposta #2 il: 04 Luglio 2012, 21:41:10 CEST »
0
GRAZIE mille ! QUALCUno pero che mi puo rispondere alla domanda
1) se dalla activity lancio un service, il service gira nel solito processo ma in un nuovo thread ?
2) posso aggiornare l interfaccia grafica dal service ?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:CHIARIMENTI SU SERVICE
« Risposta #3 il: 04 Luglio 2012, 22:11:17 CEST »
0
Citazione
1) se dalla activity lancio un service, il service gira nel solito processo ma in un nuovo thread ?
No, gira sul main thread, quello della UI per intenderci.

Citazione
2) posso aggiornare l interfaccia grafica dal service ?
Con una cattiva programmazione puoi anche farlo direttamente. Una soluzione più pulita sta nell'usare come intermediario un BroadcastReceiver registrato/cancellato dall'Activity che intercetti un Intent custom lanciato dal Service alla bisogna.

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:CHIARIMENTI SU SERVICE
« Risposta #4 il: 04 Luglio 2012, 22:24:11 CEST »
0
quindi se ho capito bene,dimmi che te ne pare
- nell activity registro un BroadcastReceiver che intercetta eventi "Lettura nuovi dati " e alla ricezione dell intento(nel override del metodo onReceive della mia classe che estenderà BroadcastReceiver) posso estrarre da esso il valore e aggiornare l interfaccia grafica
- nell service dato che ora so che gira nel main thread, devo creare un thread separato per leggere il dato ( ad esempio io devo leggere da bluetooth) e tale thread dopo aver letto il dato fa una sendBrodcast per comunicare l evento ..
capito bene ?
grazie mille

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:CHIARIMENTI SU SERVICE
« Risposta #5 il: 04 Luglio 2012, 22:30:29 CEST »
0
Esattamente, a grandi linee è quello che intendevo.

Offline agenio

  • Utente junior
  • **
  • Post: 77
  • Respect: +11
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Sistema operativo:
    Windows 8.1
Re:CHIARIMENTI SU SERVICE
« Risposta #6 il: 04 Luglio 2012, 22:39:33 CEST »
0
Io ho dovuto fare la stessa cosa tua ... sul service eseguivo le operazioni bluetooth (ho preso largo spunto dal sample bluetoothchat) e aggiornava la UI mediante message e handler. Se vedi nell'esempio che ti ho linkato c'è tutto il necessario, notare il metodo sendMessageToUI della classe MyService.

Ciao

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:CHIARIMENTI SU SERVICE
« Risposta #7 il: 05 Luglio 2012, 21:22:20 CEST »
0
stavo spulciando un codice scaricato.
se io ho un handler definito nella mia attività ( quindi presumo main thread) e faccio handler.post(R) con R un runnable che ho gia definito, viene creato un nuovo thread
oppure semplicemente il mainthread smette di fare cosa deve fare ed esegue le azioni definite nel runnable e poi torna a fare cio che faceva prima ?