2013-10-20 20 views
0

我用IOS7asihttprequest下載文件,但關機時,屏幕鎖

我開始下載和我鎖屏,和我開屏。我的程序正在關閉...

有沒有一些可以幫助我?

這是主要代碼:

初始化下載網址:

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]; 

添加到ASINetw orkQueue:

[self.netWorkQueue addOperation:request]; 

RELASE要求:

[request release]; 
+0

的確[在此博客條目幫助你走出詳細]的(http://www.xcubelabs.com/blog/ios-7-background-execution-and-multitasking/)? –

回答

1

首先,您需要啓用在後臺運行的要求。加上:

[request setShouldContinueWhenAppEntersBackground:YES];

快速任務是可能的,像魅力。但是對於長時間運行的任務,就像您想要的那樣,爲了保持繼續下載,您需要添加一個位代碼,以使該請求被終止,因爲運行時間過長。

我已經回答了位置更新的問題,無限期地每隔x秒添加一次定時器和消防API。使用UIBackgroundTaskIdentifierNSTimer。這應該給你一個想法。應該是你在做什麼的相同概念。

How do I get a background location update every n minutes in my iOS application?

+0

謝謝,它的工作原理。謝天謝地,謝謝。 –

0

當屏幕鎖定獲取您的應用程序去background.You可以將您的應用程序是針對進入後臺後,在有限的時間內完成任務,但僅在所提供的期限內。長時間運行會導致您的應用程序被終止。請參閱「iOS應用程序編程指南」中的「在後臺完成一項長時間運行的任務」一節,瞭解如何解決此問題。

對於iOS7,您可以檢查鏈接https://stackoverflow.com/a/19355437/1372368

和代碼段運行在後臺任務,你可以找到各個環節,如:How to keep an iPhone app running on background fully operational