gpt4 book ai didi

java - 当 Activity 不是当前 Activity 时,如何告诉 MyCountDownTimer 退出?

转载 作者:行者123 更新时间:2023-12-01 11:46:18 25 4
gpt4 key购买 nike

我正在进行的项目是一个测验,每个问题都有一个计时器。 30 秒。我注意到,如果您在计时器用完之前完成测试,计时器不会停止运行。因此,如果您继续进行另一个测试,则会弹出您尚未完成测试的通知并覆盖当前 Activity 。我尝试使用 cancel() 方法,但我确信我放错了地方。

这是 MyCountDownTimer 类的 fragment

public MyCountDownTimer(TextView textCounter, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.textCounter = textCounter;
}

@Override
public void onTick(long millisUntilFinished) {


textCounter.setText(String.valueOf(millisUntilFinished / 1000));

}

@Override
public void onFinish() {


Intent retryIntent = new Intent(textCounter.getContext(), Retry.class);

if (textCounter.getContext() instanceof Test1){
whichTest = 1;
retryIntent.putExtra("whichTest",whichTest);
}


textCounter.getContext().startActivity(retryIntent);

}

这是实现该方法的 Activity 的 fragment

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_page);

textCounter = ((TextView)findViewById(R.id.textCounter));


myCountDownTimer = new MyCountDownTimer(textCounter, 29000, 1000);
myCountDownTimer.start();
textCounter.setText("");
myCountDownTimer.onTick(29000);


}@Override
public void onClick(View v) {



if (questionIndex == questions7.length){

myCountDownTimer.cancel();

Intent intent1 = new Intent(Test1.this, UsersAnswers1.class);
intent1.putExtra("usersAnswers1", usersAnswers1);
intent1.putExtra("isATOF1", isATOF1);
intent1.putExtra("score1S", score1S);
startActivity(intent1);

}
}

最佳答案

重写 Activity 的 onStop 方法并使用类似的代码

@Override
protected void onStop() {
myCountDownTimer.cancel();
super.onStop();
}

因此,每当您的 Activity 进入后台时,它都会取消与当前 Activity 关联的任何计时器。

关于java - 当 Activity 不是当前 Activity 时,如何告诉 MyCountDownTimer 退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com