web-dev-qa-db-fra.com

Quelle est la meilleure façon de planifier une tâche dans React Native?

Il existe différentes façons d'exécuter des tâches en arrière-plan dans Android et iOS respectivement. J'ai trouvé Quelle est la meilleure façon de planifier une tâche dans Android? ainsi sur la pile débordement.

Je me demande quelle est la meilleure façon d'utiliser react-native seulement. Serait-il suffisant d'utiliser setInterval ou setTimeout pour des tâches qui doivent s'exécuter quotidiennement ou toutes les quelques heures?

Ces tâches ne seraient-elles pas tuées par le système d'exploitation?

Des idées ou suggestions?

18
jsdario

Je répondrai à ma propre question pour voir si ces informations peuvent être utilisées par quiconque les recherche.

Étant donné que les différents systèmes d'exploitation mobiles ont tendance à supprimer les tâches d'arrière-plan ou à les bloquer pour économiser la batterie, il existe peu de méthodes déterministes pour planifier des tâches en mode natif. J'utilise une combinaison des éléments suivants:

Méfiez-vous des dragons: votre application peut être fermée si elle abuse du temps d'exécution ou de l'utilisation de la mémoire après un réveil du système. Vous devrez peut-être réhydrater tous les auditeurs après avoir laissé le téléphone sans batterie. L'utilisateur doit donc encore interagir fortement avec votre application.

Mise à jour : De Android O il y a des limites d'exécution en arrière-plan très strictes. Lorsque vous utilisez un service HeadlessJSTask, assurez-vous qu'il est lancé en tant que service de premier plan si vous souhaitez qu'il dure plus de quelques secondes. Il peut nécessiter une notification avec lui. Tenez compte du fait que seul le chargement du bundle peut prendre jusqu'à quelques secondes, selon votre application et l'appareil.

22
jsdario

En fait, il n'y a pas de moyen suffisant pour cela. mais nous pouvons remarquer mauron85 comme un moyen meilleur que d'autres sur Android mais aussi cela ne fonctionne pas parfaitement sur [ ~ # ~] ios [~ # ~] . Par exemple, si l'application a tué l'utilisateur, le travail ne fonctionnera pas ou il n'y a aucun contrôle sur la quantité d'exécution du travail que le travail se déclenche chaque fois que l'appareil change de position.

d'autres composants comme react-native-background-fetch et react-native-background-task ont la limitation de la période d'exécution du travail (le travail se répète après chaque 15 minutes et il n'y a aucun moyen de réduire cette période) et ils fonctionnent simplement sur Android.

ce serait formidable si Facebook react native avait une solution pratique à ce problème.

0
Iman Salehi