PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → WM20 Android+iOS - Quelques soucis non résolus
WM20 Android+iOS - Quelques soucis non résolus
Débuté par Astralgeist, 24 mai 2015 13:24 - 1 réponse
Membre enregistré
34 messages
Popularité : +0 (2 votes)
Posté le 24 mai 2015 - 13:24
Bonjour,

Je développe en WM20, dernière version (57k). Ma base de données est en hyperfile client/serveur.

Pour faire mes tests, j'utilise :
- un Nexus 5 sous Android 5.1 (stock)
- un iPhone 4 sous iOS 7.1.2

En Android, j'ai les problèmes suivants :

1. Lorsque j'ai un champ carte visible dans une fenêtre, la mémoire utilisée par mon application grimpe de +/- 100mo à l'ouverture de la carte ou au moment d'afficher la carte (à noter que si la carte est à l'état visible=faux, elle ne consomme pas la RAM de l'appareil).
Le problème est qu'à la fermeture de la fenêtre contenant la carte, la mémoire allouée n'est pas libérée.
Ca veut dire que si j'ouvre et referme plusieurs fois la fenêtre, mon appli mange à chaque fois 100mo de plus, jusqu'à atteindre des tailles délirantes de plusieurs giga octets (!)

=> Je ne sais pas si cela est spécifique à mon appareil/version d'Android, ou si c'est bien un problème de WinDev.
Je vous serais reconnaissant d'essayer et si jamais vous avez une solution pour contourner ou solutionner le problème, c'est encore mieux !

Pour le moment, je laisse la carte invisible et je donne à l'utilisateur la possibilité de la faire apparaître en cliquant sur un bouton. Mais ça ne résout pas le problème de la perte de mémoire.

A noter que sous iOS, je n'ai absolument pas de problème à ce niveau, la mémoire est libérée de manière beaucoup plus dynamique.

--------------------------------------------------------------------------------------------

2. Lorsque la connexion à ma BDD HF C/S est coupée côté serveur (par exemple si ma BDD est sur mon PC de travail et que je lui coupe violemment sa connexion au WIFI domestique, ou si ma BDD est hébergée et que le serveur tombe ; la connexion de mon Nexus en 3G ou WIFI reste quant à elle opérationnelle pendant ce temps), il m'est totalement impossible par la suite de me reconnecter au serveur, lorsque la connexion est rétablie (je remets le WIFI du PC en route ou je remets le serveur hébergé en route).

Lorsque la connexion est rétablie, donc, le moindre accès à la BDD fait planter l'appli :
- si elle était en arrière plan et qu'un accès à la BDD tournait en tâche de fond pendant la coupure, j'ai un écran noir et l'appli ne revient plus jamais au premier plan, m'obligeant à la supprimer des tâches du téléphone et à la redémarrer
- si elle est au premier plan et que je clic sur un bouton (par exemple) dans lequel j'ai du code d'accès à la BDD (avec des fonctions HLitxxx ou HExécuteRequêteSQL, peu importe), j'ai un chargement infini et Android au bout de quelques secondes m'informe que l'application ne répond plus, et je dois la fermer

J'ai testé les solutions suivantes, sans succès :
- Avant chaque accès à la BDD, j'ai une procédure dans laquelle j'ai ce code :

QUAND EXCEPTION DANS
HLitPremier(MON_FICHIER)
FAIRE
SI EnModeAndroid() = Vrai ALORS
Info("Un problème de connexion ou un changement de connectivité a été détecté")
FIN
TitreSuivant("La connexion au serveur a été perdue. Reconnexion en cours...")
Sablier(Vrai)
Multitâche(-1)

HFermeConnexion(MaConnex)
HOuvreConnexion(MaConnex)
HChangeConnexion("*",MaConnex)

Sablier(Faux)
TitreSuivant("")
FIN


Ce code fonctionne plutôt bien lorsque je perds la connexion du côté client (perte de 3G ou du WIFI sur mon Nexus), mais n'a aucun effet dans le cas qui me pose problème.

- J'ai essayé également des variantes avec HReconnecte() dans le code, ça ne change rien.

- En mettant la ligne "HSurErreur("*",hErrPerteConnexion,"SurErreurPerteConnexion")" dans le code d'initialisation du projet, avec le même code que plus haut dans la procédure "SurErreurPerteConnexion" appelée, ou même avec un simple info("coucou") à l'intérieur de la procédure appelée, je vois que cette dernière n'est en fait jamais appelée, ou alors qu'elle n'a pas le temps d'être appelée et que l'appli s'est déjà arrêtée de fonctionner.

Sous iOS, je ne rencontre pas ce problème, ma procédure de reconnexion rebranche parfaitement la connexion lorsqu'elle est rétablie du côté serveur.

--------------------------------------------------------------------------------------------

En iOS, j'ai un problème de plantage de l'appli plus ou moins aléatoire qui arrive par exemple lorsque j'appuie frénétiquement sur le bouton "Retour" en haut à gauche de l'action bar que j'ai mis dans mes fenêtres, juste après que la fenêtre se soit initialisée. Cela ne se produit pas avec une fenêtre qui contient peu de champs, mais si j'ai par exemple des zones répétées avec quelques enregistrements, je remarque que je dois attendre 1 à 2 bonnes secondes avant de pouvoir faire "Retour", sans que ça plante.

Etant donné que je travaille sur un iPhone 4, j'imagine que c'est les performances de l'appareil qui sont un facteur aggravant de déclenchement du problème, mais je n'en ai aucune certitude.
J'ai pu néanmoins me rendre compte que dans le simulateur de Xcode, sur mon iMac, je rencontre moins souvent le problème, mais qu'en appuyant comme un bourrin sur "Retour", je pouvais aussi faire planter l'appli :-)

Je suppose qu'en appuyant trop rapidement sur "Retour", je coupe la main à l'appareil qui doit encore faire des traitements.
Pourtant, mon code placé dans la fin d'initialisation de la fenêtre est bien encadré par des TitreSuivant, Sablier(vrai), Multitâche(-1).

Sous Android par contre, à ce niveau c'est d'une stabilité redoutable.

--------------------------------------------------------------------------------------------

Je vous remercie par avance pour toutes les remarques ou informations que vous saurez m'apporter afin de résoudre ces problèmes.

Si je fais appel à vous, c'est parce que j'ai déjà passé beaucoup d'heures à tester des choses mais que je ne suis pas parvenu à trouver de solutions techniques fiables. Et à un moment donné, faut se rendre à l'évidence qu'on y arrivera pas seul.

Par ailleurs, on a tendance à ne remonter que les problèmes, mais WinDev Mobile est un outil qui m'a donné la possibilité de réaliser quasiment tout ce que j'avais en tête, et ce très rapidement, donc je ne remets pas la qualité du produit de PC Soft en doute avec ces remontées de problèmes :-)

Je reste dispo pour toutes infos complémentaires.
Membre enregistré
8 messages
Posté le 20 septembre 2018 - 14:45
plus de 2 ans pas de réponse :o
j ai le même problème