我有一个需要将数据(使用POST)发送到服务器的应用程序。此功能必须位于NavigationController子 Controller 之一上,并且用户应能够远离该 Controller 导航和/或关闭应用程序(仅支持iPhone4/iOS4)。
我应该使用线程/NSOperation还是使用现有的异步方法发送数据?
有什么想法/最佳实践如何执行此操作?
最佳答案
好,我会回答我自己的问题。
首先,就像tc所说的那样,最好在应用程序委托(delegate)上进行此调用,以便可以关闭NavigationController中的View。
其次,使用beginBackgroundTaskWithExpirationHandler:
标记后台处理的开始,并使用endBackgroundTask:
结束它,如下所示:
。H:UIBackgroundTaskIdentifier bgTask;
.m:
- (void)sendPhoto:(UIImage *)image
{
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
NSLog(@"Sending picture...");
// Init async NSURLConnection
// ....
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"Picture sent.");
UIApplication *app = [UIApplication sharedApplication];
if (bgTask != UIBackgroundTaskInvalid) {
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
}
iOS终止您的应用程序还有10分钟的时间。您可以使用[app backgroundTimeRemaining]
检查这次关于iphone - 最佳做法是在iOS4设备上在后台发送大量数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3928861/