正常程序退出后,会在几秒内停止工作;
要想申请更长的时间,需要用到
beginBackgroundTaskWithExpirationHandler
endBackgroundTask
一定要成对出现
- (void)applicationDidEnterBackground:(UIApplication*)application
{
UIApplication*application = [UIApplicationsharedApplication];
backgroundTask= [applicationbeginBackgroundTaskWithExpirationHandler:^{
[selfstopBackgroundTask];
}];
if(backgroundTask==UIBackgroundTaskInvalid)
{
[selfstopAllCamera];
return;
}
if(backgroundTaskTimer)
{
[backgroundTaskTimerinvalidate];
backgroundTaskTimer=NULL;
}
backgroundTaskTimer= [NSTimerscheduledTimerWithTimeInterval:30.0ftarget:selfselector:@selector(stopBackgroundTask)userInfo:NULLrepeats:NO];
}
-(void)stopBackgroundTask
{
if(backgroundTaskTimer)
{
[backgroundTaskTimerinvalidate];
backgroundTaskTimer=NULL;
}
UIApplication*application = [UIApplicationsharedApplication];
[applicationendBackgroundTask:backgroundTask];
backgroundTask=UIBackgroundTaskInvalid;
}
- (void)applicationWillEnterForeground:(UIApplication*)application
{
[selfstopBackgroundTask];
}