2017-08-23 11 views
1

J'ai donc trois retrofit web requests qui appellent de MainActivity et chaque appel ne dépendra pas l'un de l'autre.Exécution de la séquence une chaîne de demandes Web asynchrones avec Retrofit et LiveData dans android

Alors disons que premier est getImages(), deuxième getCountry(), et la finale un getUser()

Mais une condition que la prochaine activité ne doit pas charger jusqu'à ce que toutes ces demandes sont exécutées avec succès.

J'ai donc deux options

1) Créer demande imbriquée et exécuter chaque demande onsuccess Sur chaque réponse . Cela semble fiable, mais par conséquent, ce sont des appels asynchrones dont j'ai besoin pour optimiser le temps.
2) Créer une variable et l'incrémenter sur chaque appel à succès, cette approche semble gagner du temps, mais je ne suis pas sûr c'est une bonne pratique.

Alors est-ce que je peux y arriver? .et je ne suis pas en utilisant RxAndroid

Répondre

0
  1. Tous les objets ITEMLIST mettre en œuvre avec ObservableDataset

  2. MainActivity mettre en œuvre Observer.

  3. dans la méthode OnChange; Lorsque les villes/images/utilisateurs sont chargées, isLoadedCities/isLoadedImages/isLoadedUsers est défini sur true, puis déclenché inValidate().

  4. méthode inInvalidate; Vérifiez tous les drapeaux IsLoaded a été vrai, alors déclenché doSomething()

2

Vous pouvez utiliser MediatorLiveData. Pour chaque demande déclarer si tous true mis MediatorLiveDatatrue observer alors et aller ensuite l'activité LiveDataboolean drapeau et chaque demande de temps fini de vérifier tous les trois drapeau MediatorLiveData,

Vous pouvez obtenir des détails et des exemples de code de documentation