我使用IOS7
我开始下载并锁定屏幕,然后我打开屏幕。我的程序关机了......
有人可以帮助我吗?
这是主要代码:
init download url:
NSURL *url = [NSURL URLWithString:dictionaryUrl];
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url];
设置ASIHTTPRequest委托:
request.delegate = self;
init文件保存路径:
NSString *savePath = [path stringByAppendingPathComponent:name];
bool b=[ fileManager createFileAtPath :savePath contents : nil attributes : nil ];
if (b){
fileHandle=[ NSFileHandle fileHandleForWritingAtPath :savePath];
}
[request setAllowResumeForFileDownloads:NO];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
[request setDataReceivedBlock :^( NSData * data){
[fileHandle seekToEndOfFile ];
[fileHandle writeData :data];
[ label setText :[ NSString stringWithFormat : @"downloading...%.1f %%" , process . progress * 100 ]];
}];
[request setDownloadProgressDelegate:process];
添加到ASINetworkQueue:
[self.netWorkQueue addOperation:request];
重新申请:
[request release];
答案 0 :(得分:1)
首先,您需要启用在后台运行的请求。加上这个:
[request setShouldContinueWhenAppEntersBackground:YES];
快速完成任务是可能的,就像魅力一样。但是对于长时间运行的任务,就像你想要的那样,为了继续下载,你需要添加一些代码,以使这个请求因为运行时间过长而被终止。
我已经无限期地每x秒添加一次计时器和激活API,回答了位置更新的问题。使用UIBackgroundTaskIdentifier
和NSTimer
。这应该给你一个想法。应该是你正在做的事情的概念。
How do I get a background location update every n minutes in my iOS application?
答案 1 :(得分:0)
当您的屏幕锁定时,您的应用会转到后台。您可以在应用程序指向后台后的有限时间内执行任务,但仅限于提供的持续时间。运行时间超过此时间将导致您的应用程序终止。请参阅“iOS应用程序编程指南”中的“完成背景中的长时间运行任务”部分,了解如何进行此操作。
对于iOS7,您可以查看此链接https://stackoverflow.com/a/19355437/1372368。
要在后台运行任务的代码段,您可以找到各种链接,例如:How to keep an iPhone app running on background fully operational