Domanda

Nella mia app Android, un servizio viene eseguito in background e registra letture GPS su un database . L'utente vede un'attività che presenta loro pulsanti di opzione . Vorrei anche registrare il loro pulsante di opzione attualmente selezionato nel database.

Come posso accedere all'oggetto pulsante di opzione dal Servizio?

È stato utile?

Soluzione

Un metodo semplice per farlo (supponendo che il servizio venga eseguito nello stesso processo dell'Attività) è utilizzare un file delle preferenze condiviso. L'attività può scrivere nel file delle preferenze ogni volta che viene modificato un pulsante di opzione e il Servizio può registrare un listener nelle preferenze o controllare lo stato ogni volta che scrive nel database.

Il modo più complicato che evita le preferenze sarebbe l'avvio del servizio con Context.startService () (in modo che rimanga in esecuzione anche se l'attività non è presente) e quindi che l'attività chiami Context.bindService () (avviare il servizio se non è in esecuzione) per restituire uno stub IBinder con cui può comunicare. Per questo approccio, ti consiglio di guardare Demo API di servizio .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top