Je precise que l'application tourne sur un telephone mobile. Pendant le
developpement, j'utilise l'emulateur Nokia Serie 60 (qui correspond au
telephone que j'ai). L'erreur est la meme sur le telephone et dans
l'emulateur.
J'ai un MIDlet qui demarre un Thread (un Runnable plus precisement)
dans lequel il y a des activites IO:
Runnable runner = new Runnable() { // qqes IO commande };
Thread thd = new Thread(runner);
thd.start();
Les IO en question est en fait une ouverture de port de communication en
mode attente de connection (appel bloquant)
(StreamConnectionNotifier.acceptAndOpen(), similaire au
ServerSocket.accept() )
L'application fonctionne bien jusqu'a ce que je ferme le IO ( un appel
de close() sur l'objet en attente), fermeture qui est commandee depuis
le Thread principal ou bien dans un Thread separe (j'ai teste l'une et
l'aute des solutions). La methode bloquante de mon premier Thread jette
une IOException qui est capturee, et le Thread meurt ( fin de son run()
). Ceci est normal (du moins dans la logique de l'application), c'est ce
qui est souhaite.
Le probleme est qu'apres cela, l'interface graphique ne repond plus (que
ca soit par action utilisateur --boutons, menu-- ou par programme
--modification du menu, ajout de bouton-- ). Par contre si je fais un
println() sur la sortie standard ca fonctionne (dans le Thread principal
ou dans un Thread a part, qui imprime en boucle "Je suis vivant!" pour
etre sure que ma JVM n'est pas crashee).
Auriez vous des idees sur ce que je peux tester, verifier, eviter,
corriger, etc ?
Merci.
--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DNass
question : a part ce thread est ce qu'il y en a d'autre ?
"JScoobyCed" a écrit dans le message de news:412d6544$0$29662$
Bonjour,
Je precise que l'application tourne sur un telephone mobile. Pendant le developpement, j'utilise l'emulateur Nokia Serie 60 (qui correspond au telephone que j'ai). L'erreur est la meme sur le telephone et dans l'emulateur. J'ai un MIDlet qui demarre un Thread (un Runnable plus precisement) dans lequel il y a des activites IO: Runnable runner = new Runnable() { // qqes IO commande }; Thread thd = new Thread(runner); thd.start();
Les IO en question est en fait une ouverture de port de communication en mode attente de connection (appel bloquant) (StreamConnectionNotifier.acceptAndOpen(), similaire au ServerSocket.accept() )
L'application fonctionne bien jusqu'a ce que je ferme le IO ( un appel de close() sur l'objet en attente), fermeture qui est commandee depuis le Thread principal ou bien dans un Thread separe (j'ai teste l'une et l'aute des solutions). La methode bloquante de mon premier Thread jette une IOException qui est capturee, et le Thread meurt ( fin de son run() ). Ceci est normal (du moins dans la logique de l'application), c'est ce qui est souhaite. Le probleme est qu'apres cela, l'interface graphique ne repond plus (que ca soit par action utilisateur --boutons, menu-- ou par programme --modification du menu, ajout de bouton-- ). Par contre si je fais un println() sur la sortie standard ca fonctionne (dans le Thread principal ou dans un Thread a part, qui imprime en boucle "Je suis vivant!" pour etre sure que ma JVM n'est pas crashee).
Auriez vous des idees sur ce que je peux tester, verifier, eviter, corriger, etc ? Merci.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
question : a part ce thread est ce qu'il y en a d'autre ?
"JScoobyCed" <pim@pam.poum> a écrit dans le message de
news:412d6544$0$29662$636a15ce@news.free.fr...
Bonjour,
Je precise que l'application tourne sur un telephone mobile. Pendant le
developpement, j'utilise l'emulateur Nokia Serie 60 (qui correspond au
telephone que j'ai). L'erreur est la meme sur le telephone et dans
l'emulateur.
J'ai un MIDlet qui demarre un Thread (un Runnable plus precisement)
dans lequel il y a des activites IO:
Runnable runner = new Runnable() { // qqes IO commande };
Thread thd = new Thread(runner);
thd.start();
Les IO en question est en fait une ouverture de port de communication en
mode attente de connection (appel bloquant)
(StreamConnectionNotifier.acceptAndOpen(), similaire au
ServerSocket.accept() )
L'application fonctionne bien jusqu'a ce que je ferme le IO ( un appel
de close() sur l'objet en attente), fermeture qui est commandee depuis
le Thread principal ou bien dans un Thread separe (j'ai teste l'une et
l'aute des solutions). La methode bloquante de mon premier Thread jette
une IOException qui est capturee, et le Thread meurt ( fin de son run()
). Ceci est normal (du moins dans la logique de l'application), c'est ce
qui est souhaite.
Le probleme est qu'apres cela, l'interface graphique ne repond plus (que
ca soit par action utilisateur --boutons, menu-- ou par programme
--modification du menu, ajout de bouton-- ). Par contre si je fais un
println() sur la sortie standard ca fonctionne (dans le Thread principal
ou dans un Thread a part, qui imprime en boucle "Je suis vivant!" pour
etre sure que ma JVM n'est pas crashee).
Auriez vous des idees sur ce que je peux tester, verifier, eviter,
corriger, etc ?
Merci.
--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!
question : a part ce thread est ce qu'il y en a d'autre ?
"JScoobyCed" a écrit dans le message de news:412d6544$0$29662$
Bonjour,
Je precise que l'application tourne sur un telephone mobile. Pendant le developpement, j'utilise l'emulateur Nokia Serie 60 (qui correspond au telephone que j'ai). L'erreur est la meme sur le telephone et dans l'emulateur. J'ai un MIDlet qui demarre un Thread (un Runnable plus precisement) dans lequel il y a des activites IO: Runnable runner = new Runnable() { // qqes IO commande }; Thread thd = new Thread(runner); thd.start();
Les IO en question est en fait une ouverture de port de communication en mode attente de connection (appel bloquant) (StreamConnectionNotifier.acceptAndOpen(), similaire au ServerSocket.accept() )
L'application fonctionne bien jusqu'a ce que je ferme le IO ( un appel de close() sur l'objet en attente), fermeture qui est commandee depuis le Thread principal ou bien dans un Thread separe (j'ai teste l'une et l'aute des solutions). La methode bloquante de mon premier Thread jette une IOException qui est capturee, et le Thread meurt ( fin de son run() ). Ceci est normal (du moins dans la logique de l'application), c'est ce qui est souhaite. Le probleme est qu'apres cela, l'interface graphique ne repond plus (que ca soit par action utilisateur --boutons, menu-- ou par programme --modification du menu, ajout de bouton-- ). Par contre si je fais un println() sur la sortie standard ca fonctionne (dans le Thread principal ou dans un Thread a part, qui imprime en boucle "Je suis vivant!" pour etre sure que ma JVM n'est pas crashee).
Auriez vous des idees sur ce que je peux tester, verifier, eviter, corriger, etc ? Merci.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
JScoobyCed
DNass wrote:
question : a part ce thread est ce qu'il y en a d'autre ?
Dans l'application, il y a 3 a 4 threads simultanes: 1. le Thread principal du MIDlet; 2. un thread qui gere les messages ( un singleton sur un classe qui a un pushMessage(String), et dans le run() il affiche tous message n'ayant pas ete encore affiche) 3. un thread qui gere la decouverte des appareils BlueTooth environnant (ce Thread meurt bien avant que mon probleme n'apparaisse) 4. un thread qui s'occupe de la conection IO dans le cas d'un serveur (s'il y a decouverte d'un serveur dans l'environnement BlueTooth, l'app se met en mode client et ne demarre pas ce thread) 5. un Thread qui gere la reception asynchrone de message sur le canal BlueTooth (il ne demarre que si la communication entre maitre et esclave n'est etabli).
Quand je veux annuler le Thread d'ecoute IO, j'utilise aussi un Thread separe qui meurt rapidement (demarre, envoie la commande close() et meurt)
Au moment ou ca /gele/ l'interface utilisateur du telephone, il n'y a que les Thread 1., 2. qui sont en vie.
Merci de votre support.
Pour info, le MIDlet est une simple application de chat (echange de messages entre maitre et esclave). Le dev de cette application me permet de creer mon framework BlueTooth. Une fois termine, la partie purement BlueTooth pourra former une couche au dessus de JSR-82 (la stack BlueTooth) qui facilitera le dev d'application BlueTooth. J'ai termine la plupart de ce framework, je bloque juste sur ce point (annuler une ecoute sur IO). Ensuite j'aurai un petit refactoring a faire pour bien separer les choses et je pourrai commencer les vrais applications.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
DNass wrote:
question : a part ce thread est ce qu'il y en a d'autre ?
Dans l'application, il y a 3 a 4 threads simultanes:
1. le Thread principal du MIDlet;
2. un thread qui gere les messages ( un singleton sur un classe qui a un
pushMessage(String), et dans le run() il affiche tous message n'ayant
pas ete encore affiche)
3. un thread qui gere la decouverte des appareils BlueTooth environnant
(ce Thread meurt bien avant que mon probleme n'apparaisse)
4. un thread qui s'occupe de la conection IO dans le cas d'un serveur
(s'il y a decouverte d'un serveur dans l'environnement BlueTooth, l'app
se met en mode client et ne demarre pas ce thread)
5. un Thread qui gere la reception asynchrone de message sur le canal
BlueTooth (il ne demarre que si la communication entre maitre et esclave
n'est etabli).
Quand je veux annuler le Thread d'ecoute IO, j'utilise aussi un Thread
separe qui meurt rapidement (demarre, envoie la commande close() et meurt)
Au moment ou ca /gele/ l'interface utilisateur du telephone, il n'y a
que les Thread 1., 2. qui sont en vie.
Merci de votre support.
Pour info, le MIDlet est une simple application de chat (echange de
messages entre maitre et esclave). Le dev de cette application me permet
de creer mon framework BlueTooth. Une fois termine, la partie purement
BlueTooth pourra former une couche au dessus de JSR-82 (la stack
BlueTooth) qui facilitera le dev d'application BlueTooth.
J'ai termine la plupart de ce framework, je bloque juste sur ce point
(annuler une ecoute sur IO). Ensuite j'aurai un petit refactoring a
faire pour bien separer les choses et je pourrai commencer les vrais
applications.
--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!
question : a part ce thread est ce qu'il y en a d'autre ?
Dans l'application, il y a 3 a 4 threads simultanes: 1. le Thread principal du MIDlet; 2. un thread qui gere les messages ( un singleton sur un classe qui a un pushMessage(String), et dans le run() il affiche tous message n'ayant pas ete encore affiche) 3. un thread qui gere la decouverte des appareils BlueTooth environnant (ce Thread meurt bien avant que mon probleme n'apparaisse) 4. un thread qui s'occupe de la conection IO dans le cas d'un serveur (s'il y a decouverte d'un serveur dans l'environnement BlueTooth, l'app se met en mode client et ne demarre pas ce thread) 5. un Thread qui gere la reception asynchrone de message sur le canal BlueTooth (il ne demarre que si la communication entre maitre et esclave n'est etabli).
Quand je veux annuler le Thread d'ecoute IO, j'utilise aussi un Thread separe qui meurt rapidement (demarre, envoie la commande close() et meurt)
Au moment ou ca /gele/ l'interface utilisateur du telephone, il n'y a que les Thread 1., 2. qui sont en vie.
Merci de votre support.
Pour info, le MIDlet est une simple application de chat (echange de messages entre maitre et esclave). Le dev de cette application me permet de creer mon framework BlueTooth. Une fois termine, la partie purement BlueTooth pourra former une couche au dessus de JSR-82 (la stack BlueTooth) qui facilitera le dev d'application BlueTooth. J'ai termine la plupart de ce framework, je bloque juste sur ce point (annuler une ecoute sur IO). Ensuite j'aurai un petit refactoring a faire pour bien separer les choses et je pourrai commencer les vrais applications.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
DNass
Juste un axe de recherche Est ce que le thread 2 ne laisserai plus ton appli respirer ? je m'explique tu dois avoir dans le thread 2 un truc du style <snip> while(CONDITION){ <traitement> try{ Thread.sleep(<DUREE>); } catch(Exception ex){} } <snip>
Est ce que en jouant avec la duree de plus en plus longue tu/vous as/avez le meme resultat ? en esperant que cela puisse aider
"JScoobyCed" a écrit dans le message de news:412ead1c$0$23222$
DNass wrote:
question : a part ce thread est ce qu'il y en a d'autre ?
Dans l'application, il y a 3 a 4 threads simultanes: 1. le Thread principal du MIDlet; 2. un thread qui gere les messages ( un singleton sur un classe qui a un pushMessage(String), et dans le run() il affiche tous message n'ayant pas ete encore affiche) 3. un thread qui gere la decouverte des appareils BlueTooth environnant (ce Thread meurt bien avant que mon probleme n'apparaisse) 4. un thread qui s'occupe de la conection IO dans le cas d'un serveur (s'il y a decouverte d'un serveur dans l'environnement BlueTooth, l'app se met en mode client et ne demarre pas ce thread) 5. un Thread qui gere la reception asynchrone de message sur le canal BlueTooth (il ne demarre que si la communication entre maitre et esclave n'est etabli).
Quand je veux annuler le Thread d'ecoute IO, j'utilise aussi un Thread separe qui meurt rapidement (demarre, envoie la commande close() et meurt)
Au moment ou ca /gele/ l'interface utilisateur du telephone, il n'y a que les Thread 1., 2. qui sont en vie.
Merci de votre support.
Pour info, le MIDlet est une simple application de chat (echange de messages entre maitre et esclave). Le dev de cette application me permet de creer mon framework BlueTooth. Une fois termine, la partie purement BlueTooth pourra former une couche au dessus de JSR-82 (la stack BlueTooth) qui facilitera le dev d'application BlueTooth. J'ai termine la plupart de ce framework, je bloque juste sur ce point (annuler une ecoute sur IO). Ensuite j'aurai un petit refactoring a faire pour bien separer les choses et je pourrai commencer les vrais applications.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
Juste un axe de recherche
Est ce que le thread 2 ne laisserai plus ton appli respirer ?
je m'explique tu dois avoir dans le thread 2 un truc du style
<snip>
while(CONDITION){
<traitement>
try{
Thread.sleep(<DUREE>);
}
catch(Exception ex){}
}
<snip>
Est ce que en jouant avec la duree de plus en plus longue
tu/vous as/avez le meme resultat ?
en esperant que cela puisse aider
"JScoobyCed" <pim@pam.poum> a écrit dans le message de
news:412ead1c$0$23222$636a15ce@news.free.fr...
DNass wrote:
question : a part ce thread est ce qu'il y en a d'autre ?
Dans l'application, il y a 3 a 4 threads simultanes:
1. le Thread principal du MIDlet;
2. un thread qui gere les messages ( un singleton sur un classe qui a un
pushMessage(String), et dans le run() il affiche tous message n'ayant
pas ete encore affiche)
3. un thread qui gere la decouverte des appareils BlueTooth environnant
(ce Thread meurt bien avant que mon probleme n'apparaisse)
4. un thread qui s'occupe de la conection IO dans le cas d'un serveur
(s'il y a decouverte d'un serveur dans l'environnement BlueTooth, l'app
se met en mode client et ne demarre pas ce thread)
5. un Thread qui gere la reception asynchrone de message sur le canal
BlueTooth (il ne demarre que si la communication entre maitre et esclave
n'est etabli).
Quand je veux annuler le Thread d'ecoute IO, j'utilise aussi un Thread
separe qui meurt rapidement (demarre, envoie la commande close() et meurt)
Au moment ou ca /gele/ l'interface utilisateur du telephone, il n'y a
que les Thread 1., 2. qui sont en vie.
Merci de votre support.
Pour info, le MIDlet est une simple application de chat (echange de
messages entre maitre et esclave). Le dev de cette application me permet
de creer mon framework BlueTooth. Une fois termine, la partie purement
BlueTooth pourra former une couche au dessus de JSR-82 (la stack
BlueTooth) qui facilitera le dev d'application BlueTooth.
J'ai termine la plupart de ce framework, je bloque juste sur ce point
(annuler une ecoute sur IO). Ensuite j'aurai un petit refactoring a
faire pour bien separer les choses et je pourrai commencer les vrais
applications.
--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!
Juste un axe de recherche Est ce que le thread 2 ne laisserai plus ton appli respirer ? je m'explique tu dois avoir dans le thread 2 un truc du style <snip> while(CONDITION){ <traitement> try{ Thread.sleep(<DUREE>); } catch(Exception ex){} } <snip>
Est ce que en jouant avec la duree de plus en plus longue tu/vous as/avez le meme resultat ? en esperant que cela puisse aider
"JScoobyCed" a écrit dans le message de news:412ead1c$0$23222$
DNass wrote:
question : a part ce thread est ce qu'il y en a d'autre ?
Dans l'application, il y a 3 a 4 threads simultanes: 1. le Thread principal du MIDlet; 2. un thread qui gere les messages ( un singleton sur un classe qui a un pushMessage(String), et dans le run() il affiche tous message n'ayant pas ete encore affiche) 3. un thread qui gere la decouverte des appareils BlueTooth environnant (ce Thread meurt bien avant que mon probleme n'apparaisse) 4. un thread qui s'occupe de la conection IO dans le cas d'un serveur (s'il y a decouverte d'un serveur dans l'environnement BlueTooth, l'app se met en mode client et ne demarre pas ce thread) 5. un Thread qui gere la reception asynchrone de message sur le canal BlueTooth (il ne demarre que si la communication entre maitre et esclave n'est etabli).
Quand je veux annuler le Thread d'ecoute IO, j'utilise aussi un Thread separe qui meurt rapidement (demarre, envoie la commande close() et meurt)
Au moment ou ca /gele/ l'interface utilisateur du telephone, il n'y a que les Thread 1., 2. qui sont en vie.
Merci de votre support.
Pour info, le MIDlet est une simple application de chat (echange de messages entre maitre et esclave). Le dev de cette application me permet de creer mon framework BlueTooth. Une fois termine, la partie purement BlueTooth pourra former une couche au dessus de JSR-82 (la stack BlueTooth) qui facilitera le dev d'application BlueTooth. J'ai termine la plupart de ce framework, je bloque juste sur ce point (annuler une ecoute sur IO). Ensuite j'aurai un petit refactoring a faire pour bien separer les choses et je pourrai commencer les vrais applications.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
JScoobyCed
DNass wrote:
Juste un axe de recherche Est ce que le thread 2 ne laisserai plus ton appli respirer ? je m'explique tu dois avoir dans le thread 2 un truc du style <snip> while(CONDITION){ <traitement> try{ Thread.sleep(<DUREE>); } catch(Exception ex){} } <snip>
Est ce que en jouant avec la duree de plus en plus longue tu/vous as/avez le meme resultat ? en esperant que cela puisse aider
En effet, le temps est de 500 ms. J'ai donc essaye 1000 et 2000 ms, sans de meilleurs resultats. Merci pour le conseil en tout cas.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
DNass wrote:
Juste un axe de recherche
Est ce que le thread 2 ne laisserai plus ton appli respirer ?
je m'explique tu dois avoir dans le thread 2 un truc du style
<snip>
while(CONDITION){
<traitement>
try{
Thread.sleep(<DUREE>);
}
catch(Exception ex){}
}
<snip>
Est ce que en jouant avec la duree de plus en plus longue
tu/vous as/avez le meme resultat ?
en esperant que cela puisse aider
En effet, le temps est de 500 ms. J'ai donc essaye 1000 et 2000 ms, sans
de meilleurs resultats. Merci pour le conseil en tout cas.
--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!
Juste un axe de recherche Est ce que le thread 2 ne laisserai plus ton appli respirer ? je m'explique tu dois avoir dans le thread 2 un truc du style <snip> while(CONDITION){ <traitement> try{ Thread.sleep(<DUREE>); } catch(Exception ex){} } <snip>
Est ce que en jouant avec la duree de plus en plus longue tu/vous as/avez le meme resultat ? en esperant que cela puisse aider
En effet, le temps est de 500 ms. J'ai donc essaye 1000 et 2000 ms, sans de meilleurs resultats. Merci pour le conseil en tout cas.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
DNass
ce document pourra peut etre t'inspirer surtout la partie server.java http://www.nowires.org/Thesis-PDF/AndreK.pdf "JScoobyCed" a écrit dans le message de news:412f00b8$0$26765$
DNass wrote:
Juste un axe de recherche Est ce que le thread 2 ne laisserai plus ton appli respirer ? je m'explique tu dois avoir dans le thread 2 un truc du style <snip> while(CONDITION){ <traitement> try{ Thread.sleep(<DUREE>); } catch(Exception ex){} } <snip>
Est ce que en jouant avec la duree de plus en plus longue tu/vous as/avez le meme resultat ? en esperant que cela puisse aider
En effet, le temps est de 500 ms. J'ai donc essaye 1000 et 2000 ms, sans de meilleurs resultats. Merci pour le conseil en tout cas.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!
ce document pourra peut etre t'inspirer
surtout la partie server.java
http://www.nowires.org/Thesis-PDF/AndreK.pdf
"JScoobyCed" <pim@pam.poum> a écrit dans le message de
news:412f00b8$0$26765$626a14ce@news.free.fr...
DNass wrote:
Juste un axe de recherche
Est ce que le thread 2 ne laisserai plus ton appli respirer ?
je m'explique tu dois avoir dans le thread 2 un truc du style
<snip>
while(CONDITION){
<traitement>
try{
Thread.sleep(<DUREE>);
}
catch(Exception ex){}
}
<snip>
Est ce que en jouant avec la duree de plus en plus longue
tu/vous as/avez le meme resultat ?
en esperant que cela puisse aider
En effet, le temps est de 500 ms. J'ai donc essaye 1000 et 2000 ms, sans
de meilleurs resultats. Merci pour le conseil en tout cas.
--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!
ce document pourra peut etre t'inspirer surtout la partie server.java http://www.nowires.org/Thesis-PDF/AndreK.pdf "JScoobyCed" a écrit dans le message de news:412f00b8$0$26765$
DNass wrote:
Juste un axe de recherche Est ce que le thread 2 ne laisserai plus ton appli respirer ? je m'explique tu dois avoir dans le thread 2 un truc du style <snip> while(CONDITION){ <traitement> try{ Thread.sleep(<DUREE>); } catch(Exception ex){} } <snip>
Est ce que en jouant avec la duree de plus en plus longue tu/vous as/avez le meme resultat ? en esperant que cela puisse aider
En effet, le temps est de 500 ms. J'ai donc essaye 1000 et 2000 ms, sans de meilleurs resultats. Merci pour le conseil en tout cas.
-- JScoobyCed What about a JScooby snack Shaggy ? ... Shaggy ?!