J'ai une tâche répétitive qui envoie une requête http et enregistre la réponse dans SQLite. J'implémente une alarme pour répéter et AsyncTask pour gérer le travail réseau.

Étant donné que mon niveau d'API minimum est de 14, je pense que JobScheduler (nécessite un niveau d'API 21 ou supérieur) est hors de propos. Selon la référence Android pour AsyncTask, "nous vous suggérons d'utiliser uniquement AsyncTask pour gérer les éléments de travail d'une durée inférieure à 5 ms. " AsyncTask n'est donc pas non plus une option appropriée.

Mon travail réseau prend quelques secondes pour se terminer et il est répété périodiquement. Quelle est la meilleure solution pour gérer ce travail réseau (en termes de performances et de fiabilité, etc.)?

1
Mehran Zamani 5 avril 2017 à 13:48

2 réponses

Meilleure réponse

La première et la meilleure option est Google Firebase qui est fiable et efficace dans l'utilisation des ressources mobiles lorsque vous gérez l'envoi / la réception de notifications (notification push au lieu de la tirer).

Après cela, le meilleur choix est jobscheduler si votre niveau minimal d'API est de 21 !

Ensuite, IntentService convient aux tâches longues telles que les tâches réseau, car il a un thread distinct plutôt qu'un thread d'interface utilisateur (juste onHandleIntent a un thread séparé).

Le dernier tir est Asynctask.

0
Mehran Zamani 6 mai 2017 à 11:38

En termes de temps de calcul peut-être, je vous recommanderai d'utiliser Threads au lieu d'AsyncTasks, l'une des principales raisons est que, dans AsyncTasks, vous avez des options limitées pour contrôler votre tâche qui sont (onPreExecute (), doInBackground (Params ...) , onProgressUpdate (Progress ...), onPostExecute (Result), etc.), sinon avec Threads, vous pouvez synchroniser plus efficacement les heures de votre requête et réponses http, par exemple en dormant et en notifiant votre processus dans une période de temps donnée. Si votre travail réseau prend quelques secondes pour se terminer, vous devriez peut-être dormir et le notifier périodiquement.

J'espère que cela aide!

0
Alberto Bricio 5 avril 2017 à 11:09