Ecco l'affare: ho un'applicazione Android che deve chiamare un servizio Web ogni X secondi (attualmente 60 secondi). Questa applicazione ha più schede e queste schede devono interagire con i dati stessi. Uno è un MapView, uno è un ListView e quindi il terzo è irrilevante, ma alla fine sarà necessario anche ottenere alcuni dati globali. Il problema è che voglio che la mia attività principale abbia un thread che viene eseguito in background, ottiene i risultati e poi istruisce entrambe le attività child nel TabHost per aggiornarsi con i dati più recenti. Inoltre, quando l'utente fa clic sulle schede e le attività onCreate/onResume si attivano, vorrei anche forzare un nuovo aggiornamento ottenendo i dati più recenti dall'attività principale. Sono davvero in perdita qui. Ho provato questo con un servizio e alcuni metodi statici ghetto per passare un'istanza delle Attività al Servizio per chiamare funzioni specifiche per aggiornare le loro visualizzazioni ogni volta che il timer ha sparato, ma i rallentamenti erano piuttosto brutti e il codice era solo brutto brutto brutto . Eventuali suggerimenti?Il modo migliore per realizzare la comunicazione tra le attività in un'applicazione TabHost Android
modifica: Quindi l'ho implementato come thread guidato dal timer nell'attività tabhost e quindi ho thread comandati dal timer in ogni attività figlio che quindi acquisiscono i dati (in modo sincronizzato) e aggiornano la loro mappa/elenco. E 'molto più veloce, ma ancora si sente un po' hack-ish, in particolare la parte in cui sto chiamando una funzione personalizzata nell'attività genitore in questo modo:
((MainActivity)getParent()).getNearbyMatches();
Questo aggiunge un elemento di forte accoppiamento che non sono del tutto entusiasti con, ma dal punto di vista delle prestazioni è molto meglio di quello che era. Apprezzo le risposte che sono già state fornite e farò un po 'di ricerche sul front-end dei content provider, ma non sono sicuro di voler tornare al modello di servizio.
Vorrei sapere come fare anche questo!+1 – cakeforcerberus