我有一个更新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放入服务中?
答案 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。这样可以节省电池寿命,并可能阻止创建字符串,从而减少垃圾收集。