我正在调查将AFNetworking
作为ASIHTTPRequest
的替代方案,并注意到完全没有关于它是否支持后台下载/上传的信息。
使用ASIHTTPReqeust
对象,您只需调用[request setShouldContinueWhenAppEntersBackground:YES]
,请求就可以在后台继续进行。那么AFNetworking
中是否支持此功能呢?
我正在调查将AFNetworking
作为ASIHTTPRequest
的替代方案,并注意到完全没有关于它是否支持后台下载/上传的信息。
使用ASIHTTPReqeust
对象,您只需调用[request setShouldContinueWhenAppEntersBackground:YES]
,请求就可以在后台继续进行。那么AFNetworking
中是否支持此功能呢?
AFURLConnectionOperation
已经有了方法 setShouldExecuteAsBackgroundTaskWithExpirationHandler:
,能够透明地为您管理所有这些内容。
这是一个隐含的功能,所以我没有真正考虑过它的广告。你需要做的只是:
- (void)applicationWillResignActive:(UIApplication *)application {
__block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
[application endBackgroundTask:backgroundTaskIdentifier];
[[YourRestClient sharedClient] cancelAllHTTPOperations];
}];
}
这段代码涉及iOS应用程序在进入后台时如何处理任务。该方法使用了UIBackgroundTaskIdentifier和beginBackgroundTaskWithExpirationHandler方法,以确保应用程序可以在后台运行,并执行指定的任务。如果任务完成或时间过期,调用endBackgroundTask方法来结束任务,并取消所有HTTP操作。或者,如果你在自己的NSOperationQueue
中管理操作,只需在此处使用-cancelAllOperations
取消所有操作。
setShouldExecuteAsBackgroundTaskWithExpirationHandler:
ж–№жі•гҖӮжҲ‘д№ӢеүҚдёӢиҪҪзҡ„зүҲжң¬йҮҢжІЎжңүж„ҸиҜҶеҲ°иҝҷдёӘж–№жі•еӯҳеңЁгҖӮ - brainjam
AFNetworking
中没有后台执行的支持(我不确定是否有),你可以将AFNetworking
中想要的额外功能移植到ASIHTTPRequest
中,或者将后台执行支持(相对简单)添加到AFNetworking
中。 - user244343