Apple TV应用程序在睡眠模式下不会退出活动

时间:2016-02-23 09:16:42

标签: objective-c tvos apple-tv

我有一个TVOS应用,我试图在Apple TV从睡眠模式恢复后更新用户界面。

我希望在进入睡眠模式时,应用程序会调用其中一个/或两个" applicationWillResignActive"和" applicationDidEnterBackground"。这样我就可以设置一个NSNotificaiton来监听" applicationDidBecomeActive"和/或" applicationWillEnterForeground"并相应地更新应用程序中的数据。

如果我通过按住主页按钮几秒钟打开应用程序打开睡眠状态,过程似乎是正确的。

  1. applicationWillResignActive - 弹出窗口。

  2. 然后调用
  3. applicationDidBecomeActive。

  4. 按下睡眠按钮。

  5. applicationWillResignActive调用。

  6. applicationDidEnterBackground被调用。

  7. 我的应用程序现在处于后台,Apple TV处于睡眠模式(黑屏)。

  8. 按"菜单"遥控器上的按钮可唤醒Apple TV。

  9. 然后调用applicationWillEnterForeground。

  10. applicationDidBecomeActive是被调用的。

  11. 我现在可以更新用户界面。

  12. 但是,如果您让应用程序自然进入睡眠模式,则不会遵循此顺序。我的Apple TV设置如下:

    屏幕保护程序设置为在2分钟后在Apple TV上激活。

    睡眠模式设置为在15分钟后变为活动状态。

    1. 2分钟后,将调用applicationWillResignActive。

    2. 屏幕保护程序现已激活。

    3. 经过15分钟后,应用程序开始从屏幕保护模式更改为睡眠模式。

    4. 此时调用applicationDidEnterBackground。

    5. 随着applicationWillEnterForeground快速调用,然后是applicationDidBecomeActive,应用程序会在短时间内再次激活。

    6. 然后调用applicationWillResignActive - 此时我希望applicationDidEnterBackground会触发,设备将进入睡眠模式(黑屏)。

    7. 然而情况并非如此。屏幕确实变黑,但再次触发applicationDidBecomeActive。

    8. 如此有效,应用程序仍处于活动状态,但设备处于睡眠模式。这是(正确的)默认行为吗?在醒来时,我无法刷新我的UI,因为当设备唤醒时没有被调用。没有app状态方法,也没有任何视图生命周期方法。

      简而言之,我需要知道:

      1. 这是默认行为吗?

      2. 有解决方法吗?

      3. 我真的不想走坏NSTimer路线。顺便说一句,为了排除这个问题不是我的应用程序特有的,我设置了一个虚拟的" Hello World"应用程序并将应用程序状态方法记录到控制台。让设备自然进入睡眠模式时,会遵循完全相同的过程。虚拟应用程序在设备休眠之前调用applicationDidBecomeActive。

0 个答案:

没有答案