2010-11-26 6 views
0

Ich habe versucht, eine Timertask zu verwenden, um eine Linie (nach jeder Sekunde) mit Fixpunktkoordinaten zu aktualisieren. Aber die Zeile scheint sich nicht zu aktualisieren ... ist irgendetwas in meinem Code falsch?Timertask funktioniert nicht!

LineRefresh.java:

package LineRefresh.xyz.com; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 

public class LineRefresh extends Activity { 
DrawView drawView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    drawView = new DrawView(this); 
    drawView.setBackgroundColor(Color.WHITE); 
    setContentView(drawView); 

} 
} 

DrawView.java:

package LineRefresh.xyz.com; 
import java.util.Timer; 
import java.util.TimerTask; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class DrawView extends View { 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context);  
} 

@Override 
public void onDraw(final Canvas canvas) { 
    paint.setColor(Color.BLACK); 
    canvas.drawLine(50, 200, 270, 200, paint); 

    Timer timer = new Timer(); 
    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      paint.setColor(Color.BLACK); 
      canvas.drawLine(50, 200, 270, 200, paint); 
      } 
    }; 
    timer.schedule(task, 1000,1000); 
} 

} 

sholud i, stattdessen legen Sie die Timertask woanders in meinem Code?

+0

Einen Thread in onDraw laufen zu lassen, ist wahrscheinlich einer der schlechtesten Designansätze, die ich jemals in einer Sprache in einem Projekt gesehen habe. – Falmarri

Antwort

1

Verwenden Sie lieber Android Handler, um die Benutzeroberfläche nach einer bestimmten Zeit zu aktualisieren.

+0

Ich schlug das hier vor: http://stackoverflow.com/questions/4277032/i-want-to-add-a-timer-to-my-code Aber aus irgendeinem Grund ist er darauf bedacht, Fragen über die gleiche Sache . – Knossos