2012-02-28 6 views
0

Bonjour J'ai une question avec mon code. Comme vous pouvez le voir ci-dessous, j'ai r.getBlink() sous la méthode OnDraw(). Y at-il une fonction pour déterminer si le thread "s" appelle le OnDraw(). Je veux dire que j'ai essayé this.getClass(). GetBlink() mais il affiche comme une erreur. Aidez-moi, s'il vous plaît.comment obtenir des objets d'appel thread avec des outils exécutables?

 public class main extends Activity { 
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(new BitmapView(this)); 
      } 
    } 

    class BitmapView extends View implements OnTouchListener{ 
      Circle r = new Circle(); 
      Circle s = new Circle(); 

      public BitmapView(Context context) { 
      super(context); 
        this.setOnTouchListener(this); 
      r.starter(); 
      s.starter(); 
} 

public void onDraw(Canvas canvas){ 

    Paint paint = new Paint(); 
    if (r.getBlink()==true){ 
     paint.setColor(Color.YELLOW); 
     r.setBlink(false); 
    } 
    else{ 
     paint.setColor(Color.BLACK); 
     r.setBlink(true); 
    } 

    paint.setStyle(Paint.Style.FILL); 
    canvas.drawCircle(r.getX(), r.getY(), 15, paint); 
    invalidate(); 
} 
class Circle implements Runnable{ 
    Random rnd=new Random(); 
    int x=rnd.nextInt(200), y=rnd.nextInt(200); 
    boolean blink = false; 
    public int getX(){ return this.x; } 
    public int getY(){ return this.y; } 
    public boolean getBlink() { return this.blink; } 
    public void setBlink(boolean b) { this.blink=b; } 

    public void starter(){ 
     Thread running=new Thread(this); 
     running.start(); 
     x=rnd.nextInt(200); 
     y=rnd.nextInt(200); 
    } 
    public void run(){ 
     while(true){ 
     try { 
      Thread.sleep(rnd.nextInt(2000)); 
     } catch (Exception ex) {ex.printStackTrace();} 
     } 
    } 
} 
méthode
+0

Vous n'êtes pas sûr de ce que vous essayez d'accomplir ici, si ce que vous voulez est d'identifier quel thread appelle la méthode onDraw, vous devriez pouvoir utiliser Thread.currentThread(). GetName(). Puisque le thread ne contient aucune donnée sur ce qui se passe, vous devriez utiliser la classe Threadlocal pour stocker les valeurs du thread, gardez à l'esprit que vous devez appeler la méthode remove de la classe threadlocal, vous êtes certain que vous n'avez plus besoin de la valeur . Si vous fournissez plus de détails sur ce que vous avez l'intention de réaliser, je pourrais être en mesure d'aider un peu plus. – XecP277

Répondre

-1
Thread.currentThread().get Name(); 

-Ce vous donnera le nom de l'objet thread en cours d'exécution. Je crois que c'est ce que tu veux.

+0

J'ai essayé Thread.currentThread(). GetName(). GetBlink() mais cela ne fonctionne toujours pas. – banvan

+0

Essayez .... Thread.currentThread(). GetBlink() ..... getName() partie était juste pour récupérer le nom –

+0

Essayé aussi, toujours pas de succès. – banvan

Questions connexes