IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème avec une thread


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut Problème avec une thread
    Bonjour, je vous écris car j'ai un soucis avec un thread qui fait quelque chose uqe je ne comprends, quand ma methode le lance, l'interface se freeze et ça ne répond pas tant qu'il n'a pas fini ce qu'il avait à faire.

    C'est en fait un thread qui joue des bips pour figurer du code morse

    Voici le code de ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    	public void onClick(View v) {
    		switch (v.getId()) {
    		case R.id.bok:
    		case R.id.textView:
    			im.hideSoftInputFromWindow(eText.getWindowToken(), 0);
    		case R.id.bMorse:
    			texte = "";
    			morseTxt = "";
    			tView.setText("");
    			texte = eText.getText().toString();
    			morseTxt = stringToMorse(texte);
    			tView.setText(morseTxt);
    			break;
    		case R.id.bAudio:
    			texte = "";
    			morseTxt = "";
    			tView.setText("");
    			texte = eText.getText().toString();
    			morseTxt = stringToMorse(texte);
    			for (char c : morseTxt.toCharArray()) {
    				t.run(c, tView);
    			}
    			break;
    		case R.id.editText:
    			tView.setText("");
    			break;
    		}
    	}
    Et celui de mon thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class bipThread extends Thread {
    		public synchronized void run(char s, final TextView tv) {
    			switch (s) {
    			case '.':
    				sp.play(bipPoint, 1, 1, 0, 0, 1);
    				Log.i("On passe dans le thread", "A");
    				try {
    					sleep(320);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				break;
    			case '-':
    				sp.play(bipBarre, 1, 1, 0, 0, 1);
    				Log.i("On passe dans le thread", "A");
    				try {
    					sleep(380);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				break;
    			case ' ':
    				try {
    					sleep(200);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				break;
     
    			// tView.setText(tView.getText() + Character.toString(c));
    			}
    		}
    	}
    Voilà c'est p'tet un betise mais je débute

    Le lien de l'appli est ici https://market.android.com/details?i...b3JzZWNvZGUiXQ..

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    Bonjour,

    Oui tu n'a pas respecté l'interface, donc c'est normal que ça marche pas.

    Tu as plein d'exemple sur le forum.

    http://java.developpez.com/cours/
    ou sur la JavaDoc
    http://docs.oracle.com/javase/1.4.2/...ng/Thread.html

    Et attention car tu va avoir des soucis avec ton code avec les Views
    (on en a parlé Vendredi) !

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Forcer le compilateur à coller une erreur pour les "hiding methods" et les "missing @Override" est une très bonne idée en général... Ca permet d'éviter ce genre d'erreur.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Ok merci pour ta réponse

    (J'ai pas compris le "On en a parlé vendredi" ?)

    J'ai fais comme ceci finalement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    case R.id.bAudio:
    			texte = "";
    			morseTxt = "";
    			tView.setText("");
    			texte = eText.getText().toString();
    			morseTxt = stringToMorse(texte);
    			// for (char c : morseTxt.toCharArray()) {
    			// t.start();
    			new Thread(new Runnable() {
    
    				public void run() {
    					for (char c : morseTxt.toCharArray()) {
    
    						switch (c) {
    						case '.':
    							sp.play(bipPoint, 1, 1, 0, 0, 1);
    							try {
    								Thread.sleep(320);
    							} catch (InterruptedException e1) {
    								e1.printStackTrace();
    							}
    							break;
    						case '-':
    							sp.play(bipBarre, 1, 1, 0, 0, 1);
    							try {
    								Thread.sleep(380);
    							} catch (InterruptedException e1) {
    								e1.printStackTrace();
    							}
    							break;
    						case ' ':
    							try {
    								Thread.sleep(200);
    							} catch (InterruptedException e) {
    								e.printStackTrace();
    							}
    							break;
    						}
    					}
    				}
    
    			}).start();

Discussions similaires

  1. Problème avec une UDF
    Par kanmaber dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/08/2004, 23h42
  2. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo