Question

Je dois écrire une application Android qui peut recevoir des paquets UDP et, pour chacun d'eux, afficher un nouvel objet à l'écran avec OpenGL.

J'ai essayé ce qui suit: Ma classe OpenGL Renderer un ArrayList d'objets qui sont rendus chaque image et je crée une fonction qui ajoute de nouveaux objets à cette liste lorsqu'il est appelé.

Dans mon activité principale, j'ai créé un nouveau thread pour traiter les paquets UDP entrants. Chaque fois qu'un nouveau paquet est reçu, un message est envoyé au gestionnaire qui appelle la fonction qui ajoute un nouvel objet à la liste.

Cela fonctionne d'abord, lorsque le paquet est reçu, l'objet est affiché, mais si j'appuyez sur BACK et lancez l'application à nouveau tout de suite, les nouveaux objets ne sont pas affichés plus, même si les paquets sont reçus (je peux dire dans le journal).

Est-ce la bonne façon de faire, mais je manque quelque chose ou est-il une meilleure façon d'obtenir le résultat escompté?

Était-ce utile?

La solution 2

J'ai trouvé ce qui était à l'origine du problème. Le fil du réseau était le problème. Il continuerait à courir après l'application a été fermée et serait donc mettre à jour la mauvaise liste. Je devais faire l'arrêt de fil a été appelé quand OnDestroy ().

Pour résoudre ce problème, j'ai ajouté quelques drapeaux « stop » pour briser le while (true) boucle mais ne serait toujours pas bien, le truc était de fermer le socket qui a été en attente de données (s.receive () ).

Autres conseils

J'ai réussi à résoudre le problème. Je devais déclarer la liste des objets comme statique, je ne suis pas sûr pourquoi. Il semble que, après l'activité a été détruite et redémarré, il y avait une certaine confusion entre la liste étant modifiée par la fonction « ajouter » et la liste des objets qui sont rendus.

Ce serait bien si quelqu'un pouvait expliquer ce qui se passait. Merci!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top