我有一个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服务?
如果你的计时器需要生活超越你的整个生命周期Activity
,那么它不属于那里。 你当然可以把它变成一个Service
,或其他物体(如单身),可以驻留于内存中。
作为PRASHANT和Devunwire指出的那样,你需要使用的服务。 请确保你调用startService()
绑定到它之前,这将导致服务活路即使调用活动被破坏。
确保以及该服务停止本身stopSelf()
后,计时器结束,做任何它应该做的。
我觉得应该可以把倒数计时器的服务。 您可以触发计时器通过发送意图启动服务。 此外,你将不得不使用一些机制,如回调或意图或信使中继更新时间回到你的UI。
覆盖背部按钮,然后让它表现得像home键。 这样,你的活动永远不会被破坏。 这么说,我不认为这被认为是“好习惯”。
要做到我说的,你只是把这个到你的活动类。
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
不管你做什么,作为优化,您应该确保TextView的未更新,如果TextView的是不显示在屏幕上。 这应该节省电池寿命,并可能防止串,这将降低垃圾回收的创建。