Как заставить действие произойти в Android, если ничего не произошло в течение 5 секунд?

  final Handler handler = new Handler();
    final Runnable timer = new Runnable() {
        @Override
        public void run() {
            // user too late: increment miss counter
            if (++secondmisses >= MISS_LIMIT) {
                //TODO miss limit reached
                finish(); // close this activity
            }
        }
    };

Это мой работающий таймер, не уверен, что смогу найти решение здесь

Я хочу, чтобы мой сферо обнаружил столкновение за 5 секунд

если (получил столкновение за 5 секунд) двигаться вверх, если говорят, что столкновения нет, двигаться вниз

Это мой код ниже

Я не уверен, что еще я могу сделать это

       mRobot.drive(0.0f, ROBOT_VELOCITY);
            handler.removeCallbacks(timer);
            handler.postDelayed(timer, ONE_SECOND);

        this.checkcollision(v, 1); // if there is no collision
        this.checkcollisoon(v,2); //if there is a collision

Пожалуйста помоги:)

1 ответ

Решение

Попробуй с CountDownTimer, Что-то вроде этого:

long duration = 12345;
long ticksInterval = 1000; // 1 second in millis

new CountDownTimer(duration, ticksInterval){
    public void onTick(long remaining) {
        // Do something each ticksInterval millis
    }

    public void onFinish() {
        // Do something after duration millis
    }
}.start();

Когда что-то происходит в вашем приложении, вы можете установить не статический логический класс и протестировать его в onFinish() чтобы увидеть, если что-то произошло во время таймера.

Другие вопросы по тегам