Android Java:如何每分钟调用一个非静态函数,无论是在打瞌睡、空闲还是待机状态?

问题描述 投票:0回答:1

我正在编写一只虚拟宠物的代码。因此,在

MainActivity
中,我有一个不是静态的函数
update()
。我需要每分钟调用这个函数。当设备处于待机状态或应用程序关闭时,这应该无关紧要。我对电池寿命也不感兴趣,因为该应用程序只是一个业余爱好项目。

我尝试过

ScheduledExecutorService
及其功能
scheduleAtFixedRate
。当应用程序处于前台时才工作,有时无缘无故地无法工作。

然后我尝试了

AlarmManager
。无法实现它,因为
update()
无法设为静态。 (当我将
Context
投射到
MainActivty
然后再调用
update()
时,两者都不起作用。)

我只是想要一种每分钟调用一个函数的简单方法。

有什么好的 API 或任何好的库(来自 github)我可以使用。

java android timer scheduled-tasks alarmmanager
1个回答
0
投票

首先,静态或非静态在这里没有关系。 但至于在后台频繁调用代码——你不需要。 整个操作系统的设计不允许这种情况发生。 后台的活动和服务通常会被终止,其进程也会被破坏。 您可以使用前台服务,但这也不会永远持续下去,并且它不会在 Doze 模式下工作。 您可以使用闹钟,但这在打瞌睡模式下也不起作用,并且在该频率下也不起作用。

我建议你告诉我们你想在这个函数中做什么,可能有更好的方法来实现类似的结果。 例如,您说您需要更新一个变量。 一方面,这是行不通的,因为在后台你的进程将被终止,并且你不会保留该变量的值。 但另一方面,你不需要每分钟都更新它。 您需要做的是将上次更新的时间保存到磁盘,因此当您重新启动应用程序时,您可以计算经过了多少时间并根据该时间进行更新,重新启动时一次。

© www.soinside.com 2019 - 2024. All rights reserved.