WKExtendedRuntimeSession 是否改变了计时器的工作方式?

Has WKExtendedRuntimeSession changed the way timers work?

提问人:eternalstorms 提问时间:9/20/2023 最后编辑:eternalstorms 更新时间:9/20/2023 访问量:45

问:

我有一个独立的 watchOS 应用程序,当按下按钮时,它会启动 WKExtendedRuntimeSession 和一个 1 秒重复计时器。在此延长的(后台)时间内,不会发生 CPU 密集型问题。

在 watchOS 9 上,这一直运行良好,直到我再次停止它(或者在我退出正念会话类型的一小时过去后,延长的运行时会话过期)。屏幕可能会变暗,计时器会继续运行。

在 watchOS 10 上,当屏幕变暗时,我会得到大约 50 秒的时间,然后计时器就会停止。没有调用委托方法(即没有“extendedRuntimeSession...willExpire()“或”...didInvalidateWith()“),但是。 此外,scenePhase 此时不会更改,它仍处于非活动状态。执行只是停止。 当我点击手表重新打开屏幕时,计时器会恢复,就好像什么都没发生一样。

有人知道这是怎么回事吗?watchOS 10 的 WKExtendedRuntimeSessions 是否发生了一些变化,还是一个错误?

我尝试删除计时器并将其更改为递归 DispatchAsync.main.asyncAfter 块,但它产生了相同的结果。

套件 苹果手表 watchos 手表OS-10

评论


答:

0赞 eternalstorms 9/20/2023 #1

毕竟这是我做的。 由于某种原因,我的 watchOS 应用程序在后台运行时的 CPU 使用率猛增,这就是 watchOS 暂停我的应用程序的原因。 总之,现在一切都很好。