我有一个应用程序需要将数据(使用 POST)发送到服务器。此功能必须位于 NavigationController 子 Controller 之一上,并且用户应该能够离开此 Controller 和/或关闭应用程序(仅支持 iPhone4/iOS4)。 我应该使用线程/NSOperations 或/和使用现有的异步方法发送数据吗? 任何想法/最佳实践如何实现这一点?
最佳答案
好的,我会回答我自己的问题。
首先,如 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/