Autore Topic: un service muore quando l attività si unbinda?  (Letto 729 volte)

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
un service muore quando l attività si unbinda?
« il: 11 Luglio 2012, 12:12:47 CEST »
0
ciao ragazzi se ho la main activity che si binda con il service e lo starta.
quando decide di fare l unbind() col service, se quest ultimo non ha piu nessuna atività bindata muore (ovveri viene evocato l ondestroy() )?

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:un service muore quando l attività si unbinda?
« Risposta #1 il: 11 Luglio 2012, 13:48:01 CEST »
0
Dalla documentazione ufficiale:

Services | Android Developers

Citazione
Started
    A service is "started" when an application component (such as an activity) starts it by calling startService(). Once started, a service can run in the background indefinitely, even if the component that started it is destroyed. Usually, a started service performs a single operation and does not return a result to the caller. For example, it might download or upload a file over the network. When the operation is done, the service should stop itself.
Bound
    A service is "bound" when an application component binds to it by calling bindService(). A bound service offers a client-server interface that allows components to interact with the service, send requests, get results, and even do so across processes with interprocess communication (IPC). A bound service runs only as long as another application component is bound to it. Multiple components can bind to the service at once, but when all of them unbind, the service is destroyed.

Bound Services | Android Developers

Citazione
Multiple clients can connect to the service at once. However, the system calls your service's onBind() method to retrieve the IBinder only when the first client binds. The system then delivers the same IBinder to any additional clients that bind, without calling onBind() again.

When the last client unbinds from the service, the system destroys the service (unless the service was also started by startService()).
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:un service muore quando l attività si unbinda?
« Risposta #2 il: 11 Luglio 2012, 17:19:53 CEST »
0
quindi se nella mia appl ho solo 1 activity e 1 service.
SEQUENZA AZIONI:
activity si binda con il service
activity chiama startService sul service che si è bindato
......
adesso l activity fa l'unbind sul service

a questo punto essendo l unica attività bindata col service, il service eseguirà a questo punto il metodo onDestroy e terminerà ???

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:un service muore quando l attività si unbinda?
« Risposta #3 il: 11 Luglio 2012, 17:31:03 CEST »
0
No, perchè come riporta la docu: (unless the service was also started by startService()).

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:un service muore quando l attività si unbinda?
« Risposta #4 il: 11 Luglio 2012, 17:41:09 CEST »
0
Se fai il bind non dovresti chiamare lo startService. Guarda l'esempio nella doc ufficiale.

Bound Services | Android Developers

Se per qualche motivo hai la necessità di chiamare lo startService, devi anche preoccuparti di stoppare il servizio.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:un service muore quando l attività si unbinda?
« Risposta #5 il: 11 Luglio 2012, 20:47:30 CEST »
0
grazie a tutti per i chiarimenti quindi ricapitolando..
a) se decido di implementare un bound service , le azioni che facevo nella start service magari le racchiudo in un metodo messo a disposizione dall interfaccia del service ?
b) se non è stata chiamata startService, quando la mi aattività( non c è altre attività bindate al service) fa l'unbind() il service viene distrutto , giusto ? quindi anche in questo caso viene chiamato il metodo ondestroy() sul service ?