情况如下:
我正在使用imagepicker选择大型视频。显然,选择器需要一些时间来压缩视频。因此,为了简化用户体验,我已经启用了后台任务。
现在问题来了:
如果用户选择了一个视频,然后点击主页按钮,应用程序将转到后台并继续压缩视频,持续600秒。后台任务到期。在到期处理程序中,我已经停止了后台任务。
现在,如果用户在后台到期后正在恢复应用
- (void)applicationDidBecomeActive:(UIApplication *)application
未被调用。谁能解释我为什么会这样?
答案 0 :(得分:1)
当后台任务到期时,您的应用程序将真正关闭!所以它不会再次变得活跃,它正在推出。
您应该在到期处理程序中处理内容或/和后台任务成功结束时处理。 两种情况,您需要将background_task设置为无效。
如果你的应用在转换视频时转到后台,然后用户在任务结束或后台任务到期之前再次打开它,那么你应该会看到app调用applicationDidBecomeActive。
我假设你知道它,但也许你错过了Info.plist文件中的多任务属性,因此你的应用程序不会按照你期望的方式接受后台任务。
答案 1 :(得分:0)
- (void)applicationDidBecomeActive:(UIApplication)application
此方法仅在应用程序的状态从非活动状态更改为活动状态时调用。 是否可以知道视频采摘是否已完成?如果有可能那么只需存储它。当用户再次来到应用程序时只需激活您需要的功能。
答案 2 :(得分:0)
您可以尝试将日志语句添加到方法applicationDidFinishLaunching
吗?可能是应用程序在用户打开之前终止或崩溃。
另外,我认为正确的方法是在app收到applicationDidFinishLaunching
之类的信号以及app开始恢复解析时保存当前的解析上下文。因为用户可以手动关闭应用程序。