Таймер действует только в том случае, если я касаюсь дисплея (OnTouchListener)
-
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 секунды.
Не связан с StackOverflow