我的小部件中有一个时钟我正在制作,我希望它与系统时钟同步更新每一分钟。 ACTION_TIME_TICK似乎是一个完美的解决方案,但是我的大部分研究表明它在AppWidget中是不可能的,而其他人则认为有变通方法,但它们非常模糊。
我不想做一个AlarmManager,因为我必须非常频繁地更新,以确保它在系统时钟改变分钟时改变分钟,这会耗尽更多电池。
是否有针对ACTION_TIME_TICK的解决方法或什么是最佳方式来更新每分钟与系统时钟同步而电池消耗最少?
答案 0 :(得分:4)
是否有针对ACTION_TIME_TICK的解决方法
ACTION_TIME_TICK
只能通过registerReceiver()
从已经投放的内容进行注册。在你的情况下,“某些东西”需要是一个不断运行的Service
,而这通常是一种反模式。用户和操作系统可以在需要时摆脱该服务。
我会找到一种方法来轻松放松“与系统时钟同步”的要求,然后使用AlarmManager
。毕竟,Android不是RTOS,因此 nothing 将在任何保证意义上“与系统时钟同步”。
使用AlarmManager
,您可以将第一个警报指定为下一分钟的“顶部”,周期为60秒,setRepeating()
。或者,如果您认为可以手动纠正漂移,那么您将set()
安排在下一分钟的“顶部”,然后通过set()
安排下一个,作为您自己处理的一部分。方式。
答案 1 :(得分:0)
如果您只是需要在应用运行时显示它,那么只需使用asyncTask更新它 但如果你甚至在后台需要它的价值,那么使用服务将是最好的主意