PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Fermer un fil persistant
Fermer un fil persistant
Débuté par Alfons, 31 aoû. 2018 09:33 - 6 réponses
Posté le 31 août 2018 - 09:33
Bonjour à tous,

Dans une application Android, j'ai un ThredPersistent qui envoie des positions GPS à une application centrale et qui démarre lorsque l'utilisateur clique sur "Démarrer un voyage" dans l'application. Lorsque vous démarrez le thread persistant, une notification s'affiche et commence à envoyer des positions GPS.

Je veux que l'utilisateur "End of Day" clique sur l'application, le Thred persistant arrêtera d'envoyer des positions et la notification ne sera plus affichée dans la barre supérieure.

Comment je peux le faire?

Merci!!
Membre enregistré
795 messages
Popularité : +40 (42 votes)
Posté le 03 septembre 2018 - 11:56
Merci Ruben,

Je comprends que le lien que vous indiquez se réfère à un thread, mais pas à un ThreadPersistent, que je ne sais pas comment l'empêcher de s'exécuter.

Merci!!
Membre enregistré
51 messages
Popularité : +1 (1 vote)
Posté le 03 septembre 2018 - 12:20
En lisant attentivement ce que vous a donné Ruben, vous auriez vu ici : https://doc.pcsoft.fr/fr-FR/?9000108&name=Specific_features_of_applications_for_Android#NOTE15_1

qu'en Android, "Seul le thread lui-même peut s'arrêter".

Ainsi en suivant toujours l'exemple que l'on trouve dans ce qu'a fourni Ruben, on voit qu'il faut utiliser une boucle.

Dans votre cas :


TANTQUE bThreadEnVie

// ... Traitement

// Teste de la condition de fin du thread
SI JAiPlusEnvieQueLeThreadSExecute ALORS
bThreadEnVie = Faux
FIN
FIN



Normalement c'est le même fonctionnement pour un thread persistant. Des que vous voulez l'arreter vous mettez JAiPlusEnvieQueLeThreadSExecute à vrai
Message modifié, 03 septembre 2018 - 12:21
Membre enregistré
795 messages
Popularité : +40 (42 votes)
Posté le 03 septembre 2018 - 13:13
Hi. A Persistent thread is a special kind of thread. The way to manage the close is the same.

Rubén
Membre enregistré
4 messages
Posté le 04 septembre 2018 - 12:34
Merci pour vos réponses.

Ce que vous dites est une option que j'apprécie, mais je comprends que le problème est que l'utilisateur, lors de la fermeture de l'application, ferme le thread normal et la boucle.

C'est pourquoi ThreadPersistant empêche que même si l'utilisateur ferme l'application, le thread continue à exécuter la procédure.

Si elle est correcte et que je ne suis pas confus, il faudrait que je puisse fermer un ThreadPersistent à partir d’un bouton d’application (dans mon cas, lorsque l’utilisateur clique sur "End of Day", pour ne plus envoyer de positions GPS au central).

Merci!

Alfons
Membre enregistré
4 messages
Posté le 04 septembre 2018 - 12:36
Informations d'aide de PcSoft ...

https://doc.pcsoft.fr/fr-FR/?3077024&name=threadexecute_function

Durée de vie du thread: si la fonction ThreadExécute est appelée depuis un traitement global (initialisation, appel explicite dans le contexte principal), le thread sera arrêté à la fin de l'application.

ThreadPersistant

https://doc.pcsoft.fr/fr-FR/?1000020584&name=ThreadPersistent

L’application n’est pas arrêtée tant qu’au moins un thread persistant est en cours d’exécution (même si toutes ses fenêtres ont été fermées).
L'utilisation d'un thread persistant permet par exemple :
de continuer la lecture d'un morceau de musique même si la fenêtre de lecture est fermée.
de transmettre des coordonnées GPS de façon permanente.

Alfons