我正在编写一只虚拟宠物的代码。因此,在
MainActivity
中,我有一个不是静态的函数 update()
。我需要每分钟调用这个函数。当设备处于待机状态或应用程序关闭时,这应该无关紧要。我对电池寿命也不感兴趣,因为该应用程序只是一个业余爱好项目。
我尝试过
ScheduledExecutorService
及其功能scheduleAtFixedRate
。当应用程序处于前台时才工作,有时无缘无故地无法工作。
然后我尝试了
AlarmManager
。无法实现它,因为 update()
无法设为静态。
(当我将 Context
投射到 MainActivty
然后再调用 update()
时,两者都不起作用。)
我只是想要一种每分钟调用一个函数的简单方法。
有什么好的 API 或任何好的库(来自 github)我可以使用。
首先,静态或非静态在这里没有关系。 但至于在后台频繁调用代码——你不需要。 整个操作系统的设计不允许这种情况发生。 后台的活动和服务通常会被终止,其进程也会被破坏。 您可以使用前台服务,但这也不会永远持续下去,并且它不会在 Doze 模式下工作。 您可以使用闹钟,但这在打瞌睡模式下也不起作用,并且在该频率下也不起作用。
我建议你告诉我们你想在这个函数中做什么,可能有更好的方法来实现类似的结果。 例如,您说您需要更新一个变量。 一方面,这是行不通的,因为在后台你的进程将被终止,并且你不会保留该变量的值。 但另一方面,你不需要每分钟都更新它。 您需要做的是将上次更新的时间保存到磁盘,因此当您重新启动应用程序时,您可以计算经过了多少时间并根据该时间进行更新,重新启动时一次。