In Android, ho spesso bisogno di ottenere risultati da più di un servizio che utilizza un pattern di callback asincrono e voglio sapere se c'è un modo migliore per gestire questo pattern rispetto a quello che sto facendo.
In questo momento il modo in cui lo gestisco è qualcosa di simile a questo: chiamo entrambi i servizi e li passo i miei callback. Nella richiamata per il servizio A, controllo e vedo se ho un risultato memorizzato nella cache dal servizio B. Se lo faccio, allora faccio qualsiasi cosa abbia bisogno di fare con loro. In caso contrario, memorizzo nella cache il risultato del servizio A. Faccio lo stesso nel callback per il servizio B.
Quindi, ad esempio, ho un'attività che mostra la posizione corrente dell'utente su una mappa. La mappa viene caricata in modo asincrono e richiama onMapReady
. La richiesta di servizi di localizzazione richiama onConnected
. In onMapReady
, controllo se ho dei servizi di localizzazione. Se lo faccio, imposto la posizione sulla mappa all'ultima posizione dell'utente. In caso contrario, imposto la posizione su una posizione predefinita e memorizzo nella cache la mappa. In onConnected
, controllo e vedo se ho la mappa. Se lo faccio, imposto la posizione sulla mappa all'ultima posizione dell'utente. Se non lo faccio, memorizzo nell'ultima posizione.
Questo schema funziona abbastanza bene quando ci sono solo due servizi coinvolti, ma posso immaginare scenari in cui potrei avere tre o più, e sembra maldestro. C'è un altro modo che dovrei gestire questo?