iOS – 如何在后台完成漫长的进程

我的应用将视频上传到Facebook.我想在后台完成上传,即使不耐烦的用户上传过程中点击主页按钮.

经过一番阅读,我尝试过:

uibackgroundtaskIdentifier bti = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
         [[UIApplication sharedApplication] endBackgroundTask:bti];
     }];

     [fb requestWithGraPHPath:@"me/videos"
                    andParams:params
                andHttpMethod:@"POST"
                  andDelegate:self];

     [[UIApplication sharedApplication] endBackgroundTask:bti];

工作是用fb请求方法完成的.该视频通过http连接上传到Facebook.这可以正常工作,但是如果您在上传过程中点击主页按钮来背景应用程序,则上传将被暂停.如果您前台应用程序,则继续上传.

我希望会发生的是上传将在后台完成.

有什么希望让工作吗?我在整个beginBackgroundTask中做错事情?这样做似乎太简单了,但这是文档似乎所说的.

任何帮助,非常感谢.

– 约翰

解决方法

你需要调用[[UIApplication sharedApplication] endBackgroundTask:bti];在委托回调.您将需要将bti存储在ivar或静态变量中.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...