我已经在我的小工具中创建了一个时钟,我希望它每分钟都与系统时钟同步更新。ACTION_TIME_TICK似乎是完美的解决方案,但是我的大部分研究表明这在AppWidget中是不可能的,而其他人则说有变通方法,但它们非常含糊。
我不喜欢做AlarmManager,因为我必须非常频繁地更新,以确保当系统时钟改变分钟时,它会改变分钟,这会耗尽更多的电池。
有没有解决ACTION_TIME_TICK的办法,或者有什么最好的方法可以让每一分钟的更新都与系统时钟同步,同时最大限度地减少电池消耗?
发布于 2012-03-16 04:51:50
是否有针对ACTION_TIME_TICK的解决方法
只能通过registerReceiver()从已在运行的内容中注册ACTION_TIME_TICK。在您的例子中,这个“东西”需要是一个不断运行的Service,而这通常是一个反模式。用户和操作系统可以在需要时摆脱该服务。
我会找到一种方法,稍微放宽“与系统时钟同步”的要求,然后使用AlarmManager。毕竟,Android不是一个实时操作系统,所以在任何保证意义上,都不会“与系统时钟同步”。
使用AlarmManager,您可以将第一个警报指定为下一分钟的“顶部”,时间间隔为60秒和setRepeating()。或者,你可以set(),安排在下一分钟的“顶部”,然后通过set()调度下一次,作为你自己处理的一部分,如果你认为这样你可以更好地手动纠正漂移。
发布于 2012-03-16 04:44:01
如果您只需要在应用程序运行时显示它,那么只需使用asyncTask更新它,但如果您需要它的值,甚至在后台,那么使用服务将是最好的主意
https://stackoverflow.com/questions/9727633
复制相似问题