在iPhone上执行后台任务
2015-03-04 23:07
183 查看
当App进入到后台时,可以有一段时间做处理工作。
或者,对于某些服务,可以长时间运行,比如播放音乐。
对于长时间运行的任务,需要在Info.plist添加一行,键为UIBackgroundModes,值为一个数组,可以包含如下几个字符串:
audio
location
voip
newsstand-content
external-accessory
bluetooth-central
然后,在后台就可以做一些事情了:
[cpp] view
plaincopy
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
UIDevice *device = [UIDevicecurrentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
backgroundSupported = YES;
}
__blockUIBackgroundTaskIdentifier bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:bgTaskId];
bgTaskId = UIBackgroundTaskInvalid;
}];
if (backgroundSupported) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//
});
}
}
或者,对于某些服务,可以长时间运行,比如播放音乐。
对于长时间运行的任务,需要在Info.plist添加一行,键为UIBackgroundModes,值为一个数组,可以包含如下几个字符串:
audio
location
voip
newsstand-content
external-accessory
bluetooth-central
然后,在后台就可以做一些事情了:
[cpp] view
plaincopy
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
UIDevice *device = [UIDevicecurrentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
backgroundSupported = YES;
}
__blockUIBackgroundTaskIdentifier bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:bgTaskId];
bgTaskId = UIBackgroundTaskInvalid;
}];
if (backgroundSupported) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//
});
}
}
相关文章推荐
- 在iPhone上执行后台任务
- 在iPhone上执行后台任务
- iPhone的后台执行任务
- android: 后台执行的定时任务
- 后台执行命令:&和nohup command & 以及关闭、查看后台任务
- iphone OS 4.0操作系统中多任务~禁止后台执行的方法
- ios iphone 详解在IOS后台执行
- .net后台自动执行任务
- Android后台执行定时任务
- 背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知)
- 关于iOS 后台执行任务
- android: 后台执行的定时任务
- 服务的最佳实践——后台执行的定时任务
- 使用Swing Worker线程 --执行后台任务的新方法
- 玩玩Linux云主机-linux后台运行和关闭、查看后台任务,关闭终端后继续执行
- 在ASP.NET应用中执行后台任务
- 批处理在任务计划中重复执行, 并且后台运行的实现
- linux任务后台执行方法
- C#使用Timer 执行后台任务
- windows计划任务后台定时执行java的jar文件