У меня есть требование, когда мне нужно создать и запустить поток, когда приложение входит в состояние фона. Функция созданного потока - извлекать данные из локального БД и загружать на сервер, и мне не нужно делать какие-либо обновления в пользовательском интерфейсе. Мои вопросы:Начать поток, когда приложение iOS входит в состояние фона
- Где именно я должен создать тему - либо в
applicationWillResignActive
методе или вapplicationDidEnterBackground
? - Каков наилучший способ создания Thread - nsthread или GCD или Posix Way?
То, что я пытался
- Я уже работал на Android, так что я знаю, как я могу добиться этого сценария, но я новичок в прошивку, так что я получаю немного запутался начать с.
Я только что пробовал с концепцией NSThread, но он не работал. Ниже код, который я написал в меру моих знаний:
- (void)applicationWillResignActive:(UIApplication *)application { [NSThread detachNewThreadSelector:@selector(FetchReportFromDBAndUpload) toTarget:self withObject:nil]; } - (void)FetchReportFromDBAndUpload { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //Check for internet connection and fetch data from DB and upload to server [pool release]; }
Является ли это правильный способ создания нити, или мне нужно сделать некоторые изменения? Если нет, пожалуйста, помогите мне, как этого достичь. Заранее спасибо
Спасибо, Дэниэл, не могли бы вы объяснить мне немного больше? вы можете просто дать мне фрагмент кода? – RockandRoll
@SunilHavnur Вам нужно вызвать 'beginBackgroundTaskWithExpirationHandler:' из метода 'applicationDidEnterBackground:' непосредственно перед отправкой вашей долговременной задачи. См. Список 3-3 из статьи, с которой я связан. –
Хорошо Спасибо .. Я понял. – RockandRoll