-->

如何保持CountDownTimer运行,当我按下后退按钮(How keep a CountDown

2019-09-26 15:39发布

我有一个CountDownTimer其更新一个TextView,但是当我按下返回按钮停止。

CountDownTimer timer = new CountDownTimer(600000, 100) {

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

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

    public void onFinish() {
    }
};

我怎样才能保持它运行时,我按下后退按钮和活动被破坏?

PS:当定时器启动时,有没有把CountDownTimer在服务的方式我也开始GPS服务?

Answer 1:

如果你的计时器需要生活超越你的整个生命周期Activity ,那么它不属于那里。 你当然可以把它变成一个Service ,或其他物体(如单身),可以驻留于内存中。



Answer 2:

作为PRASHANT和Devunwire指出的那样,你需要使用的服务。 请确保你调用startService()绑定到它之前,这将导致服务活路即使调用活动被破坏。

确保以及该服务停止本身stopSelf()后,计时器结束,做任何它应该做的。



Answer 3:

我觉得应该可以把倒数计时器的服务。 您可以触发计时器通过发送意图启动服务。 此外,你将不得不使用一些机制,如回调或意图或信使中继更新时间回到你的UI。



Answer 4:

覆盖背部按钮,然后让它表现得像home键。 这样,你的活动永远不会被破坏。 这么说,我不认为这被认为是“好习惯”。

要做到我说的,你只是把这个到你的活动类。

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

不管你做什么,作为优化,您应该确保TextView的未更新,如果TextView的是不显示在屏幕上。 这应该节省电池寿命,并可能防止串,这将降低垃圾回收的创建。



文章来源: How keep a CountDownTimer running when I press the back button