停止设备进入睡眠模式一段时间
Posted
技术标签:
【中文标题】停止设备进入睡眠模式一段时间【英文标题】:stopping device to enter sleep mode for a duration of time 【发布时间】:2012-07-12 11:14:07 【问题描述】:在我的应用程序中,我有一些内容要从服务器下载,当用户开始下载并且应用程序处于非活动状态时,应用程序将进入后台状态,下载停止并失败。为了避免这种情况我尝试使用“beginBackgroundTaskWithExpirationHandler”在后台实现下载继续。这仅在一段时间内有效,如果设备处于后台状态/睡眠模式更长时间,下载是失败了。
为了避免下载失败,我想避免设备在应用程序下载内容时进入睡眠模式并实现相同。
我已在下载开始后立即将 setIdleTimerDisabled 设置为 YES,并在下载完成或下载失败后将该属性恢复为 NO。
[[UIApplication sharedApplication] setIdleTimerDisabled:Yes];
开始下载后,应用程序被限制进入睡眠模式,但下载完成后,应用程序仍然没有进入睡眠模式。
启动下载后,应用程序永远不会进入睡眠模式。
有人可以帮助我限制设备仅在下载期间进入睡眠状态。
TNQ
【问题讨论】:
【参考方案1】:我在重置屏幕亮度时遇到了类似的问题。根据我的研究,我发现在按下主页按钮后,操作系统会接管控制权,并且不允许您重置亮度、定时器等。
您可以通过其他方式解决此问题。在下载完成时提供本地通知,并在 applicationWillEnterForeground 中编写代码以启用计时器
- (void)applicationWillEnterForeground:(UIApplication *)application
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
我从 *** 得到这个,但我忘记了链接。对不起。
【讨论】:
在我的情况下,我没有按主页按钮,但在将 idleTimmerDisabled 属性设置为 NO 后,应用程序仍然不会进入睡眠状态。下载完成后,我将属性设置为 NO,因为没有与该设备应该进入睡眠状态...请建议您是否有更多信息 我也会尝试实现你上面说的逻辑,你的意思是 NSNotification 的本地通知?我是正确的.. 我使用了 UILocalNotification,我认为您的代码中会有一些其他问题,因为您没有按下主页按钮并且您无法重置空闲计时器。检查代表是否设置正确。请发布您的代码如果这不能解决您的问题。 tnx 回复 Arshad,我应该设置什么委托。我的代码中没有任何新内容。-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response //我将idleTimerDisabled设置为Yes。在连接didFinishLoading时我将其设置为NO。但下载完成后它不会进入睡眠状态。正在更改设备属性。即使我的应用程序在后台即使设备没有进入睡眠状态,我也会切换到其他应用程序。我尝试在 ipad 的设置选项卡中重置持续时间,但从那时起 ipad 永远不会睡眠。 Arshad@tnx 提供所有帮助。最后我解决了我的问题。所有这些我一直在测试我的应用程序,同时它连接到 xcode(调试),幸运的是当我从 mac 断开 ipad 并进行测试时一切似乎都正常。我还不确定当它连接到 xcode 时发生了什么......有趣的事情发生了以上是关于停止设备进入睡眠模式一段时间的主要内容,如果未能解决你的问题,请参考以下文章
tkinter“window.after”循环在夜间 Windows 睡眠/恢复后停止