Закрыть действие после определенного периода времени - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу начать упражнение и сохранить время начала в переменной, предположить переменную сеанса и проверять каждую секунду в течение 30 минут. По истечении 30 минут активность закроется.

Ответы [ 4 ]

1 голос
/ 01 апреля 2019

Вы можете создать обработчик для этого, как показано ниже:

    handler = new Handler();
    runnable = new Runnable() {
        @Override
        public void run() {
            finish();
        }
    };
    int MINUTES = 30;
    handler.postDelayed(runnable, 1000 * 60 * MINUTES);

Если вы хотите удалить обратные вызовы Runnable.

@Override
protected void onDestroy() {
    super.onDestroy();
    if (handler != null) {
        handler.removeCallbacks(runnable);
    }
}

Надеюсь, это поможет вам ..

1 голос
/ 01 апреля 2019

Вы можете использовать CountDownTimer

 new CountDownTimer(30000, 1000) { //time in miliseconds

 public void onTick(long millisUntilFinished) {
     view.setText("seconds remaining: " + millisUntilFinished / 1000);
 }

 public void onFinish() {
     mTextField.setText("here close your activity");
 }
}.start();

Это не упоминается в декантации, но вам, возможно, придется подумать, как справиться с задачей, если она находится в фоновом режиме.

0 голосов
/ 01 апреля 2019

Используйте следующий код:

function hideActivity(){
  new Handler().postDelayed(new Runnable(){
   public void run(){
    this.finish();
   }
  }, TIME_TAKEN_TO_BE_HIDDEN);
}
0 голосов
/ 01 апреля 2019

Вы можете использовать следующее:

int finishTime = 30000; 
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        YourActivity.this.finish();
    }
}, finishTime * 1000);
...