如果后台任务到期,则不调用didBecomeActive

时间:2013-01-03 09:30:06

标签: ios background-process

情况如下:

我正在使用imagepicker选择大型视频。显然,选择器需要一些时间来压缩视频。因此,为了简化用户体验,我已经启用了后台任务。

现在问题来了:

如果用户选择了一个视频,然后点击主页按钮,应用程序将转到后台并继续压缩视频,持续600秒。后台任务到期。在到期处理程序中,我已经停止了后台任务。

现在,如果用户在后台到期后正在恢复应用

- (void)applicationDidBecomeActive:(UIApplication *)application

未被调用。谁能解释我为什么会这样?

3 个答案:

答案 0 :(得分:1)

当后台任务到期时,您的应用程序将真正关闭!所以它不会再次变得活跃,它正在推出。

您应该在到期处理程序中处理内容或/和后台任务成功结束时处理。 两种情况,您需要将background_task设置为无效

如果你的应用在转换视频时转到后台,然后用户在任务结束或后台任务到期之前再次打开它,那么你应该会看到app调用applicationDidBecomeActive。

我假设你知道它,但也许你错过了Info.plist文件中的多任务属性,因此你的应用程序不会按照你期望的方式接受后台任务。

答案 1 :(得分:0)

- (void)applicationDidBecomeActive:(UIApplication)application

此方法仅在应用程序的状态从非活动状态更改为活动状态时调用。  是否可以知道视频采摘是否已完成?如果有可能那么只需存储它。当用户再次来到应用程序时只需激活您需要的功能。

答案 2 :(得分:0)

您可以尝试将日志语句添加到方法applicationDidFinishLaunching吗?可能是应用程序在用户打开之前终止或崩溃。

另外,我认为正确的方法是在app收到applicationDidFinishLaunching之类的信号以及app开始恢复解析时保存当前的解析上下文。因为用户可以手动关闭应用程序。