Android 倒计时问题
我使用这个Android类来实现倒计时: 我已创建了自己的类我的计数:Android 倒计时问题,android,lifecycle,Android,Lifecycle,我使用这个Android类来实现倒计时: 我已创建了自己的类我的计数: public class MyCount extends CountDownTimer{ public MyCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onFinish() { tv_test.setText(""); } @O
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
tv_test.setText("");
}
@Override
public void onTick(long millisUntilFinished) {
tv_test.setText("d"+ (millisUntilFinished/(3600000*24))+ " h: "+ (millisUntilFinished/3600000)%24 +" m: " + (millisUntilFinished/60000) % 60 + " sec: "+ (millisUntilFinished/1000) % 60);
}
}
在我的活动的onStart()中,我有以下代码:
MyCount counter = new MyCount(time, 1000);
counter.start();
现在的问题是:如果我导航到下一个活动并返回,倒计时将再次启动,并运行两次倒计时
我不能将它放在onCreate()中,因为用户可以更改时间变量。他在其他活动中更改它尝试添加布尔值
例如:
booelan counterIsLaunched = false;
boolean timeChanged = false;
在计数器的实现中添加以下内容:
@Override
public void onFinish() { tv_test.setText("");
counterIsLaunched = false;
if(timeChanged) start();
}
@Override
public void onTick(long millisUntilFinished) {
tv_test.setText("d"+ (millisUntilFinished/(3600000*24))+ " h: "+ (millisUntilFinished/3600000)%24 +" m: " + (millisUntilFinished/60000) % 60 + " sec: "+ (millisUntilFinished/1000) % 60);
counterIsLaunched = true;
if(timeChanged) start();
}
在onStart()中,尝试测试变量
if(counter.getCounterIsLaunched() == false ) {
counter.start();
}
当您更改计时器时,请执行以下操作:
counter.getTimeChanged() = true;
希望它能帮助男人:)@houcine:好主意!我还有一个问题:用户可以通过改变产品的价格来简单地改变计数器。所以我不得不取消计时器并重新安排它。@tobias:我知道如果用户更改了时间,您希望计数器被取消并重新启动,这就是您的意思吗???@houcine:thx!我刚刚将上面的代码添加到我的项目中。但是如果我从其他活动返回,if(counter.getCounterIsLaunched()==false)始终为true。是的,您的最后一个问题是我在结尾想要的:)原因可能是MyCount计数器对象再次创建了?因此,它再次设置“counterIsLaunched=false”。我还尝试添加“MyCount counter”;添加我活动的开始,但它会导致相同的结果behavior@tobias:因此,如果用户更改了时间,请通知您的计数器时间已更改,如果时间已更改,您将再次重新启动计数器:),检查我的响应我已编辑它,希望有帮助,希望这就是你最后想要的:)