当我按下后退按钮时,如何保持CountDownTimer运行

时间:2012-07-18 16:48:21

标签: android timer countdowntimer

我有一个更新TextView的CountDownTimer,但是当我按下后退按钮时它会停止。

CountDownTimer timer = new CountDownTimer(600000, 100) {

    public void onTick(long millisUntilFinished) {
        calendar.setTimeInMillis(millisUntilFinished);

        cron.setText(sf.format(calendar.getTime()));
    }

    public void onFinish() {
    }
};

当我按下后退按钮并且活动被破坏时,如何让它继续运行?

PS:我也在计时器启动时启动GPS服务,有没有办法将CountDownTimer放入服务中?

4 个答案:

答案 0 :(得分:2)

如果您的计时器需要超出Activity的生命周期,那么它不属于那里。您当然可以将它放入Service或其他可以驻留在内存中的对象(如单例)中。

答案 1 :(得分:1)

正如prashant和Devunwire指出的那样,你需要使用服务。确保在绑定之前调用startService(),这会导致服务保持活动,即使调用的Activity已被销毁。

确保在定时器完成后服务以stopSelf()停止,并做了它应该做的事情。

答案 2 :(得分:0)

我认为应该可以将倒数计时器放在服务中。您可以通过向服务发送意图来触发计时器。此外,您将不得不使用某种机制(如回调或intent或messenger)将更新时间传回您的UI。

答案 3 :(得分:0)

覆盖后退按钮,然后使其行为与主页按钮相同。这样,您的活动永远不会被破坏。也就是说,我不认为这被认为是“良好做法”。

要做我正在说的话,你只需将它放入你的活动课程中。

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

无论您做什么,作为优化,如果在屏幕上看不到TextView,您应确保不更新TextView。这样可以节省电池寿命,并可能阻止创建字符串,从而减少垃圾收集。