Pregunta

El temporizador funciona bien. El problema es que el método _dw.newgame () solo se ejecutan (si son más de dos segundos) si toco la pantalla. Tal vez tenga algo que ver con el "OnTouchListener"?

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(); } }

¿Fue útil?

Solución

Tal vez usted debe iniciar el temporizador en el método onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(Bundle savedInstanceState);
    timer = new Timer();
    timer.schedule(new Task(this), 0, 2000);
}

segundo intento con el controlador:

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();
        }
    };
}

No se compila esto, pero debería funcionar de esta manera.
Me di cuenta de otra cosa: supongo newgame () sólo debería ser llamado una vez.

timer.schedule(new Task(this), 0, 2000);
hace que cada 2 segundos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top