您可以通过使用检查当前iOS是否支持返回当前应用程序状态-respondsToSelector:
if ([[UIApplication sharedApplication] respondsToSelector:@selector(applicationState)] ){
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
}
您可以通过专门检查后台支持来确定是否支持多任务(即使运行 iOS 4 或更高版本的设备也可能没有支持多任务的硬件):
UIDevice* device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
backgroundSupported = device.multitaskingSupported;
您可以使用以下代码检索 iOS 版本(尽管您不应真正依赖以下代码来推断后台支持):
float osVersion=[[[UIDevice currentDevice] systemVersion] floatValue];
最后,如果您想在进入后台模式后执行一些任务,您将需要利用以下事件:
- (void)applicationDidEnterBackground:(UIApplication *)application
..但请注意,您的时间将非常有限。您将有大约五秒钟的时间来做任何您想做的事情。如果您需要更多时间,可以尝试向 iOS 询问更多时间:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// 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.
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
请注意,在这种情况下,iOS 可能会(或不)授予您更多时间,但这仍然是有限长度的时间。
苹果的后台执行代码值得一读。