Modifica di un TextView in un'altra classe da un servizio
-
22-09-2019 - |
Domanda
Ho due classi, uno è un un'attività standard , l'altro un servizi . Vorrei il servizio di aggiornare un TextView (via .setText()
) della attività su alcuni eventi che accadono all'interno del servizio.
Ho cercato di raggiungere questo programmando qualcosa di simile a un setter metodo all'interno del Activity-Class, ma TextViews non accetto un static
riferimento, e quando provo invocando un'istanza della classe di attività, invece (via MyActivityClassName aVariable = new MyActivityClassName();
), ottengo un NullPointer Eccezione , anche se la vista di domande è visibile al momento della chiamata.
Qualcuno potrebbe dirmi che cosa sto facendo male :-)? E 'probabilmente più di una domanda di base Java che un Android-one, ma dal momento che potrebbe avere a che fare con la natura di Android-services, ho ancora aggiunto l'androide-tag.
Grazie per il vostro aiuto!
Soluzione
Vorrei il servizio per aggiornare un TextView (via .setText) del Attività su alcuni eventi che accadono all'interno del servizio.
Che vi consiglio vivamente una maggiore disaccoppiamento logico. Hanno la Service
dire la Activity
per aggiornare il TextView
.
Si può fare tramite un onda Intent
, oppure avendo la Activity
fornire un oggetto ascoltatore che le chiamate Service
. In entrambi i casi, assicurarsi che l'Activity stacca dal servizio (annulla la registrazione del ricevitore ascoltatore o Intent
broadcast), per non causare una perdita di memoria.
E, naturalmente, questo funziona solo se l'attività è effettivamente in esecuzione.