非常新的android,如果这是一个愚蠢的问题,请原谅我......
所以,我正在制作一个带有倒数计时器的应用程序,它会定期响铃,然后在倒计时到达零时再次 - 足够简单。但是,即使用户关闭应用程序或手机处于睡眠状态,我希望应用程序继续运行,这样每当计时器响起时,应用程序将会唤醒并显示一个活动,显示倒计时结束前的时间。要做到这一点,我需要使用一项服务,并且看,谷歌开发者为我做了AlarmManager服务!甜!
然而,我发现了两件事:
1)AlarmManager类没有默认构造函数,所以我假设我不能只是扩展它并加上一些逻辑,以便我可以一次性完成所有这些操作。好的,很酷 - 我只是创建一个在开始时实例化AlarmManager的服务,并在那里实现我的逻辑。
2)在文档中,我没有看到任何方式获取经过时间或来自AlarmManager的剩余时间。
所以,我的问题是:这是否意味着我需要两个同时开始的定时器?比方说,一个AlarmManager唤醒手机并调用活动,并且服务中包含一个CountDownTimer来保存剩余时间并拨打警报铃声?
感谢您帮助解决我无能为力的屁股。
答案 0 :(得分:0)
您可以延长AlarmManager
。然而,常见的方法是获取它的一个实例,它作为系统服务运行。
使用Context.getSystemService(Context.ALARM_SERVICE)
获取实例,您就可以将PendingIntent
注册到该系统服务,该服务独立于您自己的应用。 PendingIntent
可以启动某个活动,也可以使用某些Intent
发送广播。您不会在AlarmManager
内不断监控已用时间。而是计算方法调用的当前时间与触发事件所需的时间之间的时间差。然后在AlarmManager
中设置一个警报,其中PendingIntent
表示您希望在该时间间隔或时间点采取的操作。
另一方面,如果您希望获得最大的灵活性,请将您的服务作为前台服务运行,并监听系统广播,例如ACTION_TIME_TICK
,每分钟都会触发一次。或者,如果您不在前台运行服务,您也可以使用START_STICKY
运行服务,这可以保证您的服务在系统终止后重新启动(由于睡眠或关闭应用程序)。将此视为持续运行的后台服务。这为您的实施提供了很大的灵活性。