Timer wirkt nur, wenn ich das Display berühren (OnTouchListener)
-
27-09-2019 - |
Frage
Der Timer funktioniert gut. Das Problem ist, dass das Verfahren _dw.newgame () nur ausgeführt werden soll (wenn zwei Sekunden über), wenn ich das Display berühren. Vielleicht hat es etw mit dem „OnTouchListener“?
zu tun
public class DrawView extends View implements OnTouchListener{
Timer timer = new Timer();
public DrawView(Context context)
{
timer.schedule(new Task(this),0, 2000);
}
public boolean onTouch(View view, MotionEvent event)
{}
}
class Task extends TimerTask
{
private DrawView _dw;
public Task(DrawView dw){ this._dw = dw;}
public void run()
{ _dw.newgame(); }
}
Lösung
Vielleicht sollten Sie den Timer in dem onCreate
Verfahren starten:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(Bundle savedInstanceState);
timer = new Timer();
timer.schedule(new Task(this), 0, 2000);
}
zweiter Versuch mit Handler:
public class DrawView extends View implements OnTouchListener{
private Timer timer = new Timer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(Bundle savedInstanceState);
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
handler.sendEmptyMessage();
}
}, 0, 2000);
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
newgame();
}
};
}
Ich habe kompilieren dies nicht, aber es sollte so funktionieren.
Ich bemerkte eine andere Sache: Ich nehme an newgame () sollte nur einmal aufgerufen werden.
timer.schedule(new Task(this), 0, 2000);tut, dass alle 2 Sek.