0

我試圖更好地瞭解iOS在後臺應用的行爲。我有以下動作的按鈕:iOS應用在後臺永久運行

- (IBAction)createTask:(id)sender { 


    for(int i = 0; i < 10000; ++i){ 
     NSURL *url = [NSURL URLWithString:@"http://agronigeria.com.ng/wp-content/uploads/2013/06/cocoa.jpg"]; 
     NSData *data = [NSData dataWithContentsOfURL:url]; 
     NSLog(@"Image number %d with size %lu", i, (unsigned long)[data length]); 
     NSLog(@"Time before task is killed: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]); 
    } 

}

只要我輕點按鈕,我按home鍵,發送應用程序到後臺。我期待這個很快就會停止(沒有特殊背景模式的應用程序最長可以在後臺運行的最長時間是多少?)。相反,它只是永遠。 10分鐘後,我停止了它。即使當backgroundTimeRemaining返回0時,它也會繼續。

發生了什麼?

PS我在安裝了iOS 7的4S上運行這個。

+0

HTTP://www.raywenderlich .com/29948/backgrounding-for-ios希望這可以幫助你 –

+0

在iOS 7上,在設置菜單的常規部分有一個條目。它被稱爲「在後臺刷新應用程序」,它可能會讓應用程序在後臺保持活躍狀態​​。該功能是否打開? – Kevin

+0

@凱文它確實打開了。我把它關掉了,而且我得到了同樣的行爲。 :-( – cfischer

回答

0

檢查,如果你有以下功能

應用:performFetchWithCompletionHandler

看似簡單,但嘗試添加該行或刪除處理函數

[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalNever]; 
+0

這個解決方案讓應用繼續在後臺運行? –

+0

未必 - 來自蘋果: setMinimumBackgroundFetchInterval: 指定backgrou之間必須經過的最短時間量擷取操作。 minimumBackgroundFetchInterval 可以啓動另一個後臺提取前必須經過的最小秒數。 該值僅供參考,並不表示預計在獲取 操作之間所需的確切時間量。 討論 此屬性對於其Info.plist文件中沒有UIBackgroundModes鍵且其獲取值爲 的應用程序無效。 – chewy