Autore Topic: Aggiornare UI della mai activity in base alle attività di un service.  (Letto 859 volte)

Offline super

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
ciao a tutti,

sto cercando di progettare al meglio la mia App ed ho bisogno di un pò di consigli.

Quello che voglio realizzare è fondamentalmente un Media Player. Seguendo il sample sul sito di Android (e per fare in modo che la musica si possa ascoltare anche quando la main activity non ha il focus) ho deciso di instanziare il media player in un service.

Ora però mi sorgono due dubbi fondamentali:

1- come faccio ad aggiornare la UI della main activity del player in seguito all'attività del service? Ad esempio, quando cambia la canzone in esecuzione, come faccio ad aggiornare le informazioni visualizzate nella mia activity?

Ho pensato che una soluzione potrebbe essere quella di piazzare nell'activity un LocalBroadcastManager, che se non ho capito male non è altro che un BroadcastReceiver che riceve solo Intent lanciati localmente (all'interno dello stesso processo). In questo modo, ogni volta che il service avvia una nuova canzone, potrebbe inviare questo intent con tutte le informazioni relative.

Mi confermate che quello che ho scritto è vero ed ha senso?

2- Supponendo che voglia fare alcune operazioni col mio service, oltre ad effettuare il playback musicale (d esempio voglio che interagisca con il DB e faccia alcuni calcoli non troppo pesanti). Dovrei far girare il service in un altro thread? Oppure in un altro processo? E se faccio una delle due cose, posso ancora usare il LocalBroadcastManager?

Spero di essermi spiegato bene.

Se volete, ho anche postato questa domanda su StackOverflow (How can Android service update the UI of the activity that started it? - Stack Overflow).

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:Aggiornare UI della mai activity in base alle attività di un service.
« Risposta #1 il: 18 Giugno 2012, 12:57:26 CEST »
0
Citazione
Mi confermate che quello che ho scritto è vero ed ha senso?
Personalmente rispondo con un si  :-)

Citazione
Dovrei far girare il service in un altro thread? Oppure in un altro processo? E se faccio una delle due cose, posso ancora usare il LocalBroadcastManager?
Io lancerei un secondo thread dal Service, per non incorrere nelle complicanze di dover gestire processi separati.

Offline super

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Aggiornare UI della mai activity in base alle attività di un service.
« Risposta #2 il: 18 Giugno 2012, 14:24:41 CEST »
0
Grazie mille per la risposta. E soprattutto per la conferma che non sono completamente rincitrullito :)

Quindi, teoricamente, io dovrei essere in grado di avere la main activity per la gestione della UI ed un service per il lettore multimediale.

Poi, in caso di necessità di eseguire particolari operazioni, potrei di volta in volta eseguirle lanciandole dal service stesso all'interno di un altro thread. Esatto?

Per chiarirci, nel service inserirò, all'occorrenza, codice del tipo

Codice: [Seleziona]
Thread t = new Thread(new Runnable() {

            public void run() {
                //Launch and/or Bind to service here
            }
        });
        t.start();

... all'interno del quale posso eseguire le singole operazioni o addirittura far partire altri service.
Giusto?  O:-)