1 votes

Pourquoi un raccourci SyncMe ne s'exécute-t-il qu'une seule fois ?

J'essaie de courir SyncMe uniquement lorsque l'ordinateur est pingable. Comme l'application n'est actuellement pas en mesure de fonctionner de cette manière, j'utilise Tasker et son plugin AutoShortcut. SyncMe expose une intention/un raccourci qui permet d'exécuter toutes les tâches de synchronisation pour un ordinateur donné. Tasker a ensuite été configuré pour exécuter ce raccourci sous certaines conditions et toutes les deux minutes.

Le problème est que le raccourci ne s'exécute qu'une seule fois, les appels ultérieurs au raccourci n'exécutent pas la synchronisation. Cela se produit non seulement dans Tasker, mais aussi lors de l'ajout du raccourci à l'écran d'accueil. Lorsque l'on tape sur l'icône pour la première fois, l'interface utilisateur s'affiche et la synchronisation s'exécute correctement. Mais si j'appuie sur le bouton d'accueil et que j'appuie à nouveau sur l'icône, l'interface s'affiche à nouveau sans qu'aucune action ne soit entreprise.

Le seul moyen que j'ai trouvé pour que le raccourci fonctionne à nouveau est de "fermer" l'application d'une manière ou d'une autre, par exemple en allant à l'écran d'accueil avec le bouton retour ou en supprimant SyncMe des applications récentes, ce qui ne semble pas possible à partir de Tasker, je pense que cela nécessite un root.

0voto

Andy Brudtkuhl Points 1714

Android offre aux activités un paramètre appelé launchMode qui leur permet de contrôler quand et comment ils sont lancés. Avec certaines valeurs de launchMode En revanche, le fait de relancer la même activité avec une intention ne démarrera pas une nouvelle activité : la nouvelle intention sera transmise à l'activité existante. Cela ne peut se produire que si l'activité est l'activité de premier plan, ou si elle se trouve n'importe où dans l'activité courante du tâche (c'est-à-dire si vous pouvez accéder à cette activité en appuyant simplement sur la touche retour de manière répétée).

Il est fréquent que les auteurs d'applications définissent des launchMode pour résoudre certains types de problèmes de programmation ou d'interface utilisateur, tels que les problèmes de concurrence résultant de l'exécution simultanée de deux instances de la même activité, l'une au premier plan et l'autre à l'arrière-plan. Lorsqu'ils font cela, ils ne se souviennent pas toujours d'écrire le code pour gérer la nouvelle intention que l'activité reçoit d'Android : l'activité reçoit l'intention d'une manière différente que lorsqu'elle est lancée pour la première fois.

Il est difficile de se prononcer sans en savoir plus sur cette application, mais d'après le comportement que vous décrivez, il semble que SyncMe soit tombé dans ce piège. Vous devriez expliquer au développeur ce que vous essayez de faire et lui demander de corriger le problème.

0voto

Raccourci de l'écran d'accueil

Nous pensons qu'il s'agit d'un bug d'Android. En fait, comme j'ai pu le confirmer sur une version personnalisée, l'ajout de FLAG_ACTIVITY_SINGLE_TOP a corrigé le problème pour les raccourcis de l'écran d'accueil, bien que sa documentation indique plutôt le contraire comme ci-dessous. Nous trouvons ces documents très mal écrits, en tout cas. Selon le développeur, cette correction fonctionnera tant que l'activité de l'application principale restera en tête (c'est-à-dire que modifier une tâche de synchronisation puis appuyer sur le bouton d'accueil pour tapoter à nouveau sur l'icône ne fonctionnera pas).

Si cette option est activée, l'activité ne sera pas lancée si elle est déjà en cours d'exécution au sommet de la pile de l'historique.

Tasker et AutoShortcut

Pour une raison quelconque, la solution ci-dessus ne fonctionne pas dans AutoShortcut. Je ne sais pas si l'intention envoyée par ce plugin est différente de celle des raccourcis de l'écran d'accueil. Quoi qu'il en soit, j'ai signalé le problème au développeur. Quoi qu'il en soit, je viens également de mettre en place une configuration d'intention directe dans Tasker, au lieu d'utiliser AutoShortcut, comme suit :

  • Action : com.bv.wifisync.run
  • Extra : itemId:<id>
  • Paquet : com.bv.wifisync
  • Classe : com.bv.wifisync.Hosts
  • Cible : Activity

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X