iPhone允许在后台运行10分钟时间 这样你在后台可以做一些事情

UIBackgroundTaskIdentifier _bgTask;

- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIDevice* device = [UIDevice currentDevice];

BOOL backgroundSupported = NO;

if ([device respondsToSelector:@selector(isMultitaskingSupported)])
{
backgroundSupported = device.multitaskingSupported;
}
if (backgroundSupported && _bgTask==UIBackgroundTaskInvalid && [self needBackgroundRunning])
{
UIApplication* app = [UIApplication sharedApplication];

_bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"background task %d ExpirationHandler fired remaining time %d.",_bgTask, (int)app.backgroundTimeRemaining);

NSLog(@"aaa");
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task.
NSLog(@"background task %d start time %d.", _bgTask, (int)[app backgroundTimeRemaining]);



while (app.applicationState==UIApplicationStateBackground && _bgTask!=UIBackgroundTaskInvalid && [self needBackgroundRunning] && [app backgroundTimeRemaining] > 10)
{
[NSThread sleepForTimeInterval:1];
NSLog(@"background task %d left left time %d.", _bgTask, (int)[app backgroundTimeRemaining]);

[self test];

//[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(test) userInfo:nil repeats:YES];
}

NSLog(@"background task %d finished.", _bgTask);
[app endBackgroundTask:_bgTask];
_bgTask = UIBackgroundTaskInvalid;


});
}

NSLog(@"!Enter Background");

}

- (void) test
{
NSLog(@"sssssssssss");
}

你可能感兴趣的:(iPhone允许在后台运行10分钟时间 这样你在后台可以做一些事情)