GCD使用:让程序在后台较长久的运行(UIBackgroundTaskIdentifier )
在没有使用GCD时,当app被按home键退出后,app仅有最多5秒钟的时候做一些保存或清理资源的工作。但是在使用GCD后,app最多有10分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存,发送统计数据等工作。
Declaration
SWIFT
typealias UIBackgroundTaskIdentifier = Int
OBJECTIVE-C
typedef NSUInteger UIBackgroundTaskIdentifier;
Import Statement
OBJECTIVE-C
@import UIKit;
SWIFT
import UIKit
Availability
Available in iOS 4.0 and later.
代码例子:
- (void)applicationDidEnterBackground:(UIApplication *)application {
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"555555");
});
});
}
代码例子:
后台播放音乐
+ (UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId
{
// 1. 设置并激活音频会话类别
AVAudioSession *session = [AVAudioSession sharedInstance];
[session AVAudioSessionCategoryPlayback error:nil];
[session setActive:YES error:nil];
// 2. 允许应用程序接收远程控制
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
// 3. 设置后台任务ID
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
if (newTaskId != UIBackgroundTaskInvalid && backTaskId != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:backTaskId];
}
return newTaskId;
}
最新文章
- Css3阴影实例
- jqGrid的autoencode参数设置为true在客户端可能引发的编码问题
- Eclipse导入项目出现红色叹号的解决方法
- vijos P1915 解方程 加强版
- Java Web学习笔记3
- Hibernate管理Session和批量操作
- 按需讲解之Supervisor
- 利用column-width属性设置多栏布局
- javascript的调试
- 应用之间进行跳转,ComponentName的方式
- Bind和Eval的区别详解
- Qt Creator(编译器MinGW)中使用__attribute__(packed)的问题
- ANT property三种使用方式
- thinkphp添加数据 add()方法
- c++语言的设计和演化---在线函数
- ArcGIS AddIN开发之 设置当前工具为Edit Tool
- DBMS_NETWORK_ACL_ADMIN (OCP 053 第七题)
- Java 猜字谜游戏
- JavaScript变量作用域(Variable Scope)和闭包(closure)的基础知识
- python各种模块,迭代器,生成器