1

我有一个使用CountDownTimerinside a的应用程序BraodcastReceiverCountDownTimer可以持续 1 小时以上。计时器在通知区域显示倒计时(秒间隔)。

一些用户报告说,该应用程序似乎在长时间倒计时。CountDownTimer 由小部件触发。

有谁知道CountDownTimer操作系统是否可以停止和回收a?

另一种方法是在运行服务的 1 秒间隔设置重复警报。有更好的选择吗?

4

1 回答 1

3

有谁知道操作系统是否可以停止和回收 CountDownTimer?

你的过程将是。

另一种方法是在运行服务的 1 秒间隔设置重复警报。

如果您的意思是“重复警报”,那在任何实际意义上都不是一种选择AlarmManagerAlarmManager不是为每一秒的事件而设计的。

有更好的选择吗?

这是证明前台服务合理的少数情况之一。既然你有一个Notification反正,而且你的AlarmManager方法无论如何都会让服务保持不变,你也可以放弃AlarmManager和使用startForeground()来保持服务。更新Notification您正在使用的startForeground(),并用于ScheduledExecutorService在后台线程上每秒获得控制权。

倒计时完成后,调用stopForeground()stopSelf()摆脱这一切。

于 2013-08-08T12:52:40.037 回答