Android Volley + Loader pattern?

J'ai plutôt aimé Volley Framework, mais j'ai encore des doutes à ce sujet.

Par exemple, comment Volley s'aligne-t-il avec le modèle Loader? Étant donné que les demandes sont traitées de manière asynchrone, l'appel à l'arrière-plan n'a pas beaucoup de sens. D'autre part, si nous ignorons le modèle Loader, nous annulerons le chargement et le rechargement des ressources nécessaires, c'est un peu gaspillage.

  • Malheureusement, l'application s'arrête lors de la vérification du réseau
  • Comment désactiver le clavier Soft Android pour une activité particulière?
  • Problème d'émulateur dans Android
  • Android quelle est la différence entre getAction () et getActionMasked () dans MotionEvent
  • Est-il possible de spécifier plusieurs valeurs de gravité dans l'élément spinner custom_style.xml?
  • Webview n'apparaît pas sur la police de Gujarati
  • Comment travaille Volley Framework avec Loaders dans Android?

  • Les chaînes ne semblent pas être égales dans Java sur Android, même si elles impriment la même chose
  • Android java.lang.IllegalArgumentException: Aucun tel service ComponentInfo JobScheduler
  • Comment puis-je lire un mp3 dans le dossier res / raw de mon application Android?
  • Bouton d'action flottant Android semi-transparent couleur de fond
  • Android - comment convertir html en pdf?
  • Comment lire de l'audio diffusé en arrière-plan sur Android?
  • 4 Solutions collect form web for “Android Volley + Loader pattern?”

    Un chargeur peut encapsuler pratiquement n'importe quoi, y compris les demandes de volley. Lorsque votre chargeur encapsule un cadre qui gère déjà le travail d'arrière-plan pour vous et vous rappelle sur le thread principal, comme Volley, votre implémentation de chargeur ne doit pas hériter d' AsyncTaskLoader mais simplement de la classe de base Loader . Vous devriez alors lancer la requête Volley dans la méthode onForceLoad() .

    Lorsque votre chargeur récupère le résultat sur le thread principal via un rappel, il suffit de le pousser vers l'activité / Fragment en appelant deliverResult() .

    Votre chargeur devrait également garder une référence à la demande Volley en cours pour pouvoir l'annuler dans onStopLoading() . OnStopLoading () n'est pas appelé en cas de changement de configuration comme la rotation de l'écran, uniquement lorsque vous quittez l'Activité.

    Le seul inconvénient est que les chargeurs n'ont pas de mécanisme intégré pour propager des erreurs, alors que Volley fait. Donc, dans votre retour d'erreur Volley à l'intérieur de votre chargeur, vous devrez fournir un résultat nul ou envoyer une diffusion locale pour notifier l'activité / Fragment de l'erreur.

    AFAIK et moi avons vu dans les sources, les réponses à vos demandes seront mises en cache, SI le serveur envoie les en- headers mise headers cache appropriés (ETag), et la deuxième fois que vous tenterez de faire une requête GET , à la même URL, vous serez Avec une réponse du cache , au lieu d'appeler à nouveau le Network (par défaut, Volley met en cache les requêtes en utilisant comme key l' URL ).

    L'ajout de Requests à RequestQueue doit être effectué à partir de MainThread , car il n'est pas logique de les appeler à partir d'un Thread arrière-plan.

    Je viens de publier un article sur Volley et l'intégration dans le projet sur le modèle Loader. Une approche avancée est présentée. Les états du chargeur sont entièrement définis et affichés dans le diagramme.

    Article: https://plus.google.com/117981280628062796190/posts/8b9RmQvxudb

    Diagramme des états des chargeurs

    Il est possible d'effectuer des requêtes synchrones avec Volley via la classe RequestFuture. Je n'ai pas examiné cela personnellement, mais il semble que vous pourriez exploiter cela avec un chargeur pour obtenir le meilleur des deux mondes (le cache de volley avec la stabilité de chargement du chargeur).

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.