O timer age apenas se eu tocar na tela (OnTouchListener)
-
27-09-2019 - |
Pergunta
O timer funciona bem. O problema é que o método _dw.newgame () é executado (se dois segundos terminarem) se eu tocar na tela. Talvez tenha sth a ver com o "OnTouchListener"?
public class DrawView extends View implements OnTouchListener{
Timer timer = new Timer();
public drawView (contexto de contexto) {timer.schedule (nova tarefa (this), 0, 2000); } public boolean oTouch (View View, MotionEvent Event) {}}
A Tarefa da classe estende TimerTask {private DrawView _DW; Tarefa pública (drawView dw) {this._dw = dw;} public void run () {_dw.newgame (); }}
Solução
Talvez você deva começar o cronômetro no onCreate
método:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(Bundle savedInstanceState);
timer = new Timer();
timer.schedule(new Task(this), 0, 2000);
}
Segunda tentativa com manipulador:
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();
}
};
}
Eu não compilei isso, mas deveria funcionar assim.
Percebi outra coisa: suponho que newgame () deve ser chamado apenas uma vez.
timer.schedule(new Task(this), 0, 2000);Isso faz isso a cada 2 segundos.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow