从onCreate方法启动了我的计时器。即使我的活动停止,Timer也会继续运行。怎么可能?
在onTick()方法中使用toast方法,Thread是主线程。我想,当Activity停止时主线程将停止。任何人都可以对此作出解释。
CustomCountDownTimer.java
private class CustomCountDownTimer extends CountDownTimer
{
public CustomCountDownTimer(long millisInFuture,long countDownInterval)
{
super(millisInFuture,countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
long seconds=millisUntilFinished/1000;
long hours=seconds/(60*60);
long remainingSeconds=seconds%(60*60);
long minutes=remainingSeconds/60;
remainingSeconds=remainingSeconds%60;
Toast.makeText(HomeActivity.this, Thread.currentThread().getName()+"", Toast.LENGTH_LONG).show();
btnStatusMessage.setText(hours+" hr "+minutes+" min ");
}
答案 0 :(得分:3)
使用此代码取消计时器,
timer.cancel();
答案 1 :(得分:1)
计时器与活动无关。你需要在Activity的一个状态方法(onPause / onStop / etc')中停止它。
答案 2 :(得分:1)
您应该将此代码添加到您的活动中。
public void onDestroy(){
super.onDestroy();
timer.cancel();
}
答案 3 :(得分:0)
1.Use flage to check timer is already running
if (!timerHasStarted) {
countDownTimer.start();
timerHasStarted = true;
btnStatusMessage.setText("STOP");
} else {
countDownTimer.cancel();
timerHasStarted = false;
btnStatusMessage.setText("RESTART");
}
答案 4 :(得分:0)
只需添加到您的活动
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
mHandler.removeCallbacks(mUpdateTimeTask);//mHandler (Handler) and mUpdateTimeTask (Runnable)
}
别忘了添加它:
mHandler.removeCallbacks(mUpdateTimeTask);
在你调用意图之前
回家这会帮助你