我試圖增加對退出我的iOS應用前景後,完成任務的支持。所有我在互聯網上看到了教程,點我的應用程序委託寫這樣的事情:iOS的後臺任務完成編程
- (void)applicationDidEnterBackground:(UIApplication *)application {
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
UIApplication *application = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier background_task;
background_task = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//DO STUFF IN BACKGROUND HERE
MyTask *task = [[MyTask alloc] initWithURL:@"http://google.com"];
[task setDelegate:self];
[task start];
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
});
}
}
的任務是能夠啓動,但啓動後,下一行被處理,我的應用程序被殺害。我能夠告訴你何時MyTask
由於委託調用停止,但我怎麼改變我的程序,以便後臺任務被設置爲無效委託被調用後。我會移動
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
到委託功能,還是我需要做別的事情。
預先感謝您的幫助, Guvvy
hi @ djibouti33你可以詳細說明你試圖說的話:「我的建議是重構[任務開始],所以它是同步的。」 。我在600秒後使用NStimer調用方法。但bgTask瞬間過期的應用程序進入後臺 –
方法[任務開始]是一個異步方法,這意味着它立即返回(進行任何工作之前),然後background_task被打死。我使它同步,該方法將阻止任何其他執行,直到它完成,然後可以在正確的時間成功地終止background_task。 – djibouti33