倒数计时器的自动下一个活动不使用取消方法

时间:2018-01-17 04:02:20

标签: java android countdowntimer

我尝试使用倒数计时器自动进行下一次活动但是如果使用取消方法则不起作用。

//Next Activity
  CountDownTimer myCountDownTimer = new CountDownTimer(10000, 1000) {
       public void onTick(long millisUntilFinished) {

    }
   public void onFinish() {
       Intent startActivity = new Intent(ActivityNew1.this,ActivityNew2.class);
       startActivity(startActivity);


   }

}.start();
myCountDownTimer.cancel();

以上java代码自动下一个活动每1s不起作用。我尝试删除myCountDownTimer.cancel();

//Next Activity
    new CountDownTimer(30000, 1000) {
        public void onFinish() {
            Intent startActivity = new Intent(ActivityNew1.this,ActivityNew2.class);
            startActivity(startActivity);
            finish();
        }

        public void onTick(long millisUntilFinished) {
        }

    }.start();

此java代码适用于自动下一个活动,但自动下一个活动运行回家后,自动下一个不停止。

解决

我只是在背景方法上添加此代码。

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent i = new Intent (this, MainActivity.class);
    i.setFlags( Intent.FLAG_ACTIVITY_NO_HISTORY | FLAG_ACTIVITY_CLEAR_TOP );
    startActivity( i );
    finish();
    finishAffinity();
    System.exit( 0 );
}

1 个答案:

答案 0 :(得分:0)

初始化一个全局布尔变量

boolean isPause = false;

宣告倒数计时器

MyCountDownTimer myCountDownTimer;

初始化CountDownTimer

myCountDownTimer = new MyCountDownTimer(5000, 1000);
myCountDownTimer.start();

倒数计时器代码

public class MyCountDownTimer extends CountDownTimer {

        public MyCountDownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            if(isPause){
                startActivity(new Intent(LoginActivity.this, ForgotPasswordActivity.class));
                myCountDownTimer.cancel();
            }

        }

        @Override
        public void onFinish() {
//            startActivity(new Intent(ConsumerHomeActivity.this, ForgotPasswordCustomerActivity.class));
        }


    }

如果要取消定时器,只需执行此操作

isPause = true;

然后onTick中的代码会命中,你将进入下一个活动,因为倒数计时器不会调用onFinish方法。