gpt4 book ai didi

java - 显示关闭时 ScheduledExecutorService 不执行的原因是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:55 27 4
gpt4 key购买 nike

我是 Android 的新手,遇到了一个问题,我想了解一下。问题是当我的智能手机显示屏关闭时,java.util.concurrent.ScheduledExecutorService 似乎没有发出它的任务。我使用的是 java.util.Timer 之前没有这个问题,但是由于需要等待任务执行结束而正在过渡到 ScheduledExecutorService在停止 Timer 之后。 Timer 在后台运行的 Service 中使用。

注意:使用 AlarmManager 不是一个选项,因为我想了解 ScheduleExecutorService 的问题,否则将再次使用 Timer (同步关机)。

任务的调度方式如下:

mScheduler = Executors.newSingleThreadScheduledExecutor();
mScheduler.scheduleAtFixedRate(mTask, 1, 1, TimeUnit.SECONDS);

为了进一步阐明目的:我正在尝试定期更新通知以及部分用户界面,如果设备想要进入“ sleep ”模式则不需要这样做,但我需要来处理这个案子。我认为了解 ScheduledExecutorServiceTimer 相比的行为方式的原因将有助于我处理它。

更新:

根据 Chris Stratton 的建议,我正在使用 BroadcastReceiver 来接收 Intent.ACTION_SCREEN_ONIntent.ACTION_SCREEN_OFF Intents to pause/恢复 ScheduledExecutorService,它就像一个魅力。但是,ScheduledExecutorService 似乎还有另一个问题,在打电话时,执行不会停止,但似乎以某种方式受到限制。只有当屏幕由于接近传感器而关闭时才会出现这种情况(在这种情况下也没有收到任何 Intent )...

最佳答案

当屏幕关闭时,如果没有其他应用程序持有 WakeLock,则 CPU 挂起。

当您需要在屏幕关闭时完成某些操作时,您应该使用 PARTIAL WakeLock。

并确保在完成所有后台工作后立即释放它。

关于java - 显示关闭时 ScheduledExecutorService 不执行的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21916191/

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