12

情况如下:

我正在使用 imagepicker 挑选一个大视频。显然,选择器将花费一些时间来压缩视频。因此,为了简化用户体验,我为其启用了后台任务。

现在问题来了:

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

现在,如果用户在后台过期后恢复应用程序

- (void)applicationDidBecomeActive:(UIApplication *)application

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

4

3 回答 3

1

当后台任务到期时,你的应用就真的被关闭了!所以它不会再次变得活跃,它正在启动。

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

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

我假设您知道这一点,但也许您在 Info.plist 文件中缺少多任务属性,因此您的应用程序没有按照您期望的方式接受后台任务。

于 2013-04-27T08:21:44.870 回答
0

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

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

于 2013-01-06T12:35:01.890 回答
0

-(void) applicationDidBecomeActive:(UIApplication)application

该方法仅在应用状态从非活动状态变为活动状态时调用。是否可以知道视频选择是否完成?如果可能的话,那就把它储存起来。以及当用户再次访问该应用程序时。只需触发您需要的功能。

于 2013-01-04T09:07:13.763 回答