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?
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