我有一个大量使用视频的应用。在典型的用例中,我将iPad连接到外部显示器。我只想打开外接显示器; iPad显示屏无需继续使用。
理想情况是有人连接到外接显示器,然后锁定他们的iPad。但这会暂停我的应用程序。 (目前,我正在调用setIdleTimerDisabled以防止iPad锁定并暂停我的应用。)
我想让用户选择锁定iPad,但仍然可以运行我的应用并将图像发送到视频中。 (注意:我不是在讨论当应用程序不在前台时保持我的应用程序运行。我只是想让它在前台运行时继续运行,但设备已被锁定。)
这可能吗?
答案 0 :(得分:4)
我会说不,这是不可能的。原因如下:
docs读取:
按下“睡眠/唤醒”按钮是另一种中断,会导致您的应用暂时停用。当用户按下此按钮时,系统会禁用触摸事件,将应用程序移至后台,但将应用程序的applicationState属性值设置为
UIApplicationStateInactive
(而不是UIApplicationStateBackground
),最后锁定屏幕
在上面的文档中需要注意的一点是,在“发生中断时该怎么做”下面,Apple建议您停止执行某些任务。
为了响应此更改,您的应用应在其
applicationWillResignActive:
方法中执行以下操作:
- 停止计时器和其他定期任务。
- 停止正在运行的元数据查询。
- 不要发起任何新任务。
- 暂停播放动画(通过AirPlay播放时除外)。
- 如果您的应用是游戏,则进入暂停状态。
- 重新调整OpenGL ES帧速率。
- 暂停执行非关键代码的任何调度队列或操作队列。 (您可以在不活动时继续处理网络请求和其他时间敏感的后台任务。)
这告诉我Apple不希望或期望你的应用在这种状态下做很多事情,除了准备完全落后。
在相关说明中,这是一个线程,显示如何确定您是否已按下“睡眠/唤醒”按钮:
Is it possible to distinguish between locking the device and sending an app to background?