即使Activity停止,计时器也会运行

时间:2013-10-18 06:32:14

标签: android countdowntimer

从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 "); 

        }

5 个答案:

答案 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);
在你调用意图之前

回家这会帮助你