Таймер действует только в том случае, если я касаюсь дисплея (OnTouchListener)

StackOverflow https://stackoverflow.com/questions/3457709

  •  27-09-2019
  •  | 
  •  

Вопрос

Таймер работает нормально. Проблема в том, что метод _dw.newgame () просто выполняется (если закончится две секунды), если я коснусь дисплея. Может быть, это связано с «OnTouchListener»?

public class DrawView extends View implements OnTouchListener{
Timer timer = new Timer();

Public DrawView (контекстное контекст) {Timer.schedule (новая задача (это), 0, 2000); } Общественный булевой Ontouch (просмотр представления, MotionEvent Event) {}}

Класс задача расширяет TimerTask {Private DrawView _DW; Общественная задача (DrawView dw) {this._dw = dw;} public void Run () {_dw.newgame (); }}

Это было полезно?

Решение

Может быть, вы должны начать таймер в onCreate Метод:

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

Вторая попытка с обработчиком:

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

Я не скомпилировал это, но он должен работать так.
Я заметил еще одну вещь: я полагаю, Newgame () должен вызывать только один раз.

timer.schedule (новая задача (это), 0, 2000);
делает это каждые 2 секунды.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top