gpt4 book ai didi

android - 当屏幕变为非 Activity 状态时,计时器似乎正在暂停

转载 作者:搜寻专家 更新时间:2023-11-01 09:18:37 25 4
gpt4 key购买 nike

所以我有一个非常简单的 android Activity ,它会在您按下按钮时启动计时器。

Timer timer = new Timer();<br/>
timer.schedule(new TimerTask() {<br/>
@Override<br/>
public void run() {<br/>
doStuff();<br/>
}<br/>
}, 15 * 60 * 1000);

因此,当我测试时,这对我来说相当有效,但事实证明,当屏幕变为非 Activity 状态时,计时器也会如此。我对此感到有点惊讶。我知道你需要创建一个服务来让任何东西在后台运行,但我没有意识到当手机由于缺乏 Activity 而使屏幕停用时,这是前台 Activity 所必需的。让我感到困惑的是,我认为这正如我最初预期的那样有效,而且就在最近几周左右,定时器受到了手机节电的影响。虽然我可能是错的..

所以基本上我的问题是:我是否看到了预期的行为?我是否需要将所有计时器创建为服务或以某种方式禁止节能?

谢谢你的建议,帕特里克

最佳答案

I was a bit surprised by this.

当屏幕熄灭时,CPU 很快就会关闭。您的 Timer 用户与它无关,因为那是 Java 的事情,而不是 Android 的事情。

What confuses me is I think this worked as I expected originally and just in the last few weeks or so has the timer been affected by the phone saving power.

我非常怀疑。

am I seeing expected behavior?

是的。

Do I need to create all timers as services or somehow disallow powersaving?

如果您的 Activity 必须保持屏幕和设备开启,请使用:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

但是,这应该用于视频播放器之类的东西。

如果您尝试做一些更像是 Windows 计划任务或 Linux cron 作业的事情,您将需要使用 AlarmManagerIntentService,可能是 WakefulIntentService .

还有其他可能性,但我不知道您要构建什么。

关于android - 当屏幕变为非 Activity 状态时,计时器似乎正在暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2483382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com