PROFESSIONAL NEWSGROUPSWINDEV , WEBDEV and WINDEV Mobile
Empêcher la mise à l'arrière plan d'une fenêtre
Started by erbl, May, 23 2024 12:09 PM - 5 replies
Registered member 240 messages
Posted on May, 23 2024 - 12:09 PM
Bonjour tout le monde Je suis embêté sur WINDEV Mobile 2024 avec une fenêtre de mon application Je lance un process dans un thread secondaire et j'ouvre une fenêtre avec le nom du thread en paramètre Sur cette dernière , j'ai une image de loading et une procédure automatisée toutes les 1 seconde qui fait la chose suivante :SI ThreadEtat ( gs NomThread ) < > threadEnCours ALORS SI PAS EnModeArrièrePlan ( ) ALORS IMG_ Loading .. Visible = Faux Info ( gs Operation + " terminée" , "Début :" + DateHeureVersChaîne ( dh HeureDebut) , "Fin : " + DateHeureVersChaîne ( DateHeureSys ) , "L'application va se fermer" ) TitreSuivant ( "" ) FONCTION maison de fermeture de l' application SINON SI gb NotifAffichee = Faux notif est une Notification notif.Titre = gs Operation + " terminée" notif.Message = "L'opération " + gs Operation + " est terminée " notif.ActiveApplication = Vrai NotifAjoute ( notif) gb NotifAffichee = Vrai FIN FIN FIN
Sur Android 9, ZERO soucis, ça tourne puis lorsque le thread se termine , j'ai ma fenêtre d'information et l'application se ferme Sur les versions + récentes (Android 13, 14 mais possible que ça le fasse aussi sur 10 pas pu tester), l'application se met en arrière plan au bout d'un moment et du coup ça ne fonctionne pas comme attendu Quelqu'un sait comment forcer la fenêtre au premier plan ? J'ai essayé plusieurs choses sans succèsEvénement mise en arrièe plan de NomApplication depuis la fenêtre MaFenêtre SI ThreadEtat ( gs NomThread ) = threadEnCours ALORS RepriseSaisie ( MaFenêtre ) FIN
import android.app.Activity; import android.view.Window; import android.view.WindowManager.LayoutParams; public static void miseEnVeilleDesactive_JAVA() { Activity xa = getCurrentActivity(); Window xw = xa.getWindow(); xw.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); }
-- Ce n'est pas l'outil le plus important mais la manière de s'en servir
Registered member 405 messages
Posted on May, 27 2024 - 8:52 AM
Bonjour, Je n'ai pas tout compris à ta présentation générale, mais on est d'accord que le problème principal est qu'un affichage peut se produire alors que l'application est en arrière-plan ? Pour te croiser régulièrement sur ce forum, je ne crois pas t'apprendre que, depuis Android 10 (ou 11), les affichages sont interdits lorsqu'on est en arrière-plan ... Donc par définition, si tu ouvres une fenêtre à partir d'un thread secondaire ou même que tu exécutes un simple Info(), tu t'exposes à des problèmes. Je suis conscient que je ne fais pas beaucoup avancer le problème, mais j'espère contribuer un peu à l'éclaircir !
Registered member 240 messages
Posted on May, 27 2024 - 4:16 PM
Pucpood a écrit : Bonjour, Je n'ai pas tout compris à ta présentation générale, mais on est d'accord que le problème principal est qu'un affichage peut se produire alors que l'application est en arrière-plan ? Pour te croiser régulièrement sur ce forum, je ne crois pas t'apprendre que, depuis Android 10 (ou 11), les affichages sont interdits lorsqu'on est en arrière-plan ... Donc par définition, si tu ouvres une fenêtre à partir d'un thread secondaire ou même que tu exécutes un simple Info(), tu t'exposes à des problèmes. Je suis conscient que je ne fais pas beaucoup avancer le problème, mais j'espère contribuer un peu à l'éclaircir !
Je me rends compte que j'ai pas été clair du tout au final Le soucis c'est pas que je crée un un affichage (ça provoquerait un plantage) mais que du coup comme on est en arrière plan, l'utilisateur n'a plus du tout le visuel sur ce qui se passe (c'est une simple fenêtre avec un boucle qui tourne jusqu'à la fin du thread) Du coup, en attendant de trouver mieux, lorsque l'utilisateur repasse au premier plan, je reprends où j'en étais lorsque l'application était en arrière plan -- Ce n'est pas l'outil le plus important mais la manière de s'en servir
Registered member 240 messages
Posted on March, 20 2025 - 4:03 PM
Pour information, j'avais également des soucis de performance que j'ai en parti corrigé ( c'est encore long mais c'est mieux) et ça a corrigé ce soucis de fermeture intempestive / passage à l'arrière plan non maîtrisé -- Ce n'est pas l'outil le plus important mais la manière de s'en servir
Registered member 405 messages
Posted on March, 21 2025 - 8:18 AM
Bonjour, Je ne suis pas sûr d'avoir tout tout bien compris, mais j'ai l'impression c'est en lien avec des problèmes de performances que j'ai sur mon appli avec les versions Android les plus récentes. Ton problème de départ : l'appli se mettait en arrière-plan spontanément alors qu'avant Android 9 ce n'était pas le cas. Il semble que tu aies réglé ce problème indirectement en réglant des problèmes de performances. Finalement comment as-tu fait ? Qu'as-tu corrigé ?
Registered member 240 messages
Posted on March, 21 2025 - 12:08 PM
Pucpood a écrit : Bonjour, Je ne suis pas sûr d'avoir tout tout bien compris, mais j'ai l'impression c'est en lien avec des problèmes de performances que j'ai sur mon appli avec les versions Android les plus récentes. Ton problème de départ : l'appli se mettait en arrière-plan spontanément alors qu'avant Android 9 ce n'était pas le cas. Il semble que tu aies réglé ce problème indirectement en réglant des problèmes de performances. Finalement comment as-tu fait ? Qu'as-tu corrigé ?
Bonjour, je ne sais pas si ma réponse va pouvoir t'aider mais voici ce que j'ai fait Avant : plusieurs appel Webservice soap, récupération de la réponse en xml puis transformation avec la méthode jsonVersVariant et parcours des membres du variant pour ajout dans base HFSQL classique Après plusieurs appel Webservice soap, récupération de la réponse stockée dans une variable JSON et c'est cette variable que je parcours pour ajouter dans HFSQL Je suis passé de presque 7 minutes avec passage intempestif multiple en arrière plan à 3 minutes pour le traitement global -- Ce n'est pas l'outil le plus important mais la manière de s'en servir