Bonjour à tous,
Je charge un fichier de waypoints que j'affiche dans un TableView et sur une carte OpenStreetMap dans un webview. Dans le code java, un clic sur une ligne du tableview "communique" avec le javascript pour centrer la carte sur le marker et afficher son nom.
Dans le code javascript d'affichage du webview, j'ai inséré une fonction qui permet, au clic sur un marker, de récupérer dans le programme java avec une classe Bridge, le texte affecté au marker. Cela permet de retrouver le waypoint dans le tableview et de sélectionner la ligne concernée.
Après quelques heures de suée, cela fonctionne nickel... Sauf... sauf que cela ne marche plus au deuxième chargement d'un fichier de waypoint !!! Plus précisément, cela ne marche plus quand je relance un loadContent du WebEngine.
Pas de problème dans le sens java -> javascript, un clic sur le tableview déclenche l'action javascript attendue. Par contre, dans le sens javascript -> java, cela ne fonctionne plus.
Dans mes recherches web, j'ai retrouvé cette réponse de Bouye.
Je ne saisis pas trop le sens du si tu ne conserves pas une référence dessus dans ta classe Javaun correctif à eut lieu sur le WebEngine pour éviter que ce dernier conserve une référence ad vitam eternam sur l'objet bridge passé ce qui provoque une fuite mémoire. Donc si tu ne conserves pas une référence dessus dans ta classe Java, cet objet bridge sera garbage collected à un moment ou un autre et donc tous les appels suivant échoueront car il sera null dans la partie JavaScript.
J'ai baladé l'instanciation de ma classe Bridge sans résultat... une idée ?
Partager