Je développe une application Android, où initialement il télécharge toutes les ressources des applications sous forme de serveur et enregistre dans le dossier de données, où le téléchargement se produit en arrière-plan. Lorsque l'utilisateur navigue entre des fragments contenant gridview, les ressources téléchargées s'affichent dans l'élément de la grille (imageview) sinon il montre le cercle de chargement indiquant que les ressources sont en état de téléchargement.Android multi-threading télécharger n nombre de ressources en arrière-plan
Voici comment j'ai conçu le gestionnaire de téléchargement. Utilisation de ThreadPoolExecuter pour créer 4 threads et PriorityBlockingQueue avec la taille par défaut. Chaque thread a une file d'attente de taille 5. Ici, la fonction round robin vérifie chaque file d'attente de threads et ajoute une tâche au thread qui a l'espace libre dans la file d'attente.
Quelqu'un pourrait-il m'aider à atteindre les exigences ci-dessus en donnant des pointeurs, exemple de pseudo-code.
I mis en œuvre le scénario ci-dessus, mais je me bats sur la zone où « Chaque thread a une file d'attente de la taille 5. Fonction robin Ici ronde va vérifier chaque file d'attente de threads et ajoute tâche au fil possède un espace libre de file d'attente »
Je pensais depuis 2 jours comment implémenter le thread avec sa propre file d'attente qui doit être remplie par PriorityBlockingQueue par round robin.
Je ne suis pas vraiment sûr pourquoi vous ce faire de cette façon. La limite de votre débit n'est pas le traitement (vous n'avez pas mentionné du tout le traitement du fichier) de sa bande passante. En téléchargeant plusieurs choses à la fois, vous répartissez votre bande passante entre plusieurs transferts. Je ne pense pas que ce serait plus rapide qu'un seul fil de télécharger une chose à la fois. –
Les fichiers dans le sens seront principalement des images. Plus encore, j'ai besoin de télécharger des images en parallèle. – Kruise
AGain, pourquoi? Votre facteur limitant sera la bande passante. Le téléchargement de plusieurs choses en parallèle n'aidera pas vraiment, à moins que l'un des serveurs ait une bande passante si faible qu'il ne sature pas votre pipe. Ce qui est peu probable, surtout sur mobile. –