Timer 计时器进入后台仍能继续运行
来源:互联网 发布:http json 接口规范 编辑:程序博客网 时间:2024/04/29 15:25
利用苹果给出的三种类型的程序可以保持在后台运行:音频播放类AVFoundation 在Build Phases添加依赖库
1、步骤一:在Info.plist中,添加"Required background modes"键,value为:App plays audio
2、步骤二:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. NSError *setCategoryErr = nil; NSError *activationErr = nil; [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr]; [[AVAudioSession sharedInstance] setActive: YES error: &activationErr]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES;}
3、步骤三:将以下代码添加到appDelegate文件中的- (void)applicationDidEnterBackground:(UIApplication *)application函数,也可添加到在具体类中注册的应用进入后台后的通知方法
- (void)applicationDidEnterBackground:(UIApplication *)application{ UIApplication* app = [UIApplication sharedApplication]; __block UIBackgroundTaskIdentifier bgTask; bgTask = [app 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(), ^{ if (bgTask != UIBackgroundTaskInvalid) { bgTask = UIBackgroundTaskInvalid; } }); });}
完成以上步骤你会发现,程序进入后台后仍可运行定时器!
0 0
- Timer 计时器进入后台仍能继续运行
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- OS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- 对异常处理中的一个问题的思考(出现异常,程序仍能继续运行)
- 让程序进入后台后能长久运行代码
- swift 计时器进入后台后计时问题
- 从后台切换回来或者从Tabbarcontroller切换回来动画还能继续运行的解决方案
- jce 中的Provider
- android开发环境下载网站
- tomcat 7如何配置线程池
- rg.hibernate.ObjectNotFoundException: No row with the given identifier exists
- aix下设置自动启动、关闭oracle
- Timer 计时器进入后台仍能继续运行
- android效果集合[链]
- DirectByteBuffer
- Activity与service 之间的通信
- C++入门系列 拷贝构造函数 拷贝赋值函数
- Android 工具类积累
- 深入理解按位异或运算符
- ids for this class must be manually assigned before calling save()
- extjs 文本框后加一个按钮或 文字