美文网首页
iOS定时器后台运行

iOS定时器后台运行

作者: 我的名字就这么长 | 来源:发表于2018-09-12 11:37 被阅读189次

        //定时器后台运行代码↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓定时器后台运行代码//

        /*定时器后台运行*/

        NSError *setCategoryErr =nil;

        NSError *activationErr  =nil;

        /*设置Audio Session的Category 一般会在激活之前设置好Category和mode。但是也可以在已激活的audio session中设置,不过会在发生route change之后才会发生改变*/

        [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];

        /*激活Audio Session*/

        [[AVAudioSession sharedInstance] setActive:YESerror: &activationErr];

        //定时器后台运行代码↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑定时器后台运行代码//

    - (void)applicationDidEnterBackground:(UIApplication*)application {

        //定时器后台运行代码↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓定时器后台运行代码//

        UIApplication* app = [UIApplication sharedApplication];

        __block UIBackgroundTaskIdentifier bgTask;

        /*注册一个后台任务,告诉系统我们需要向系统借一些事件*/

        bgTask = [appbeginBackgroundTaskWithExpirationHandler:^{

            dispatch_async(dispatch_get_main_queue(), ^{

                if(bgTask !=UIBackgroundTaskInvalid)

                {

                    /*销毁后台任务标识符*/

                    /*不管有没有完成,结束background_task任务*/

                    bgTask =UIBackgroundTaskInvalid;

                }

            });

        }];

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

            dispatch_async(dispatch_get_main_queue(), ^{

                if(bgTask !=UIBackgroundTaskInvalid)

                {

                    /*销毁后台任务标识符*/

                    /*不管有没有完成,结束background_task任务*/

                    bgTask =UIBackgroundTaskInvalid;

                }

            });

        });

        //定时器后台运行代码↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑定时器后台运行代码//

    }

    相关文章

      网友评论

          本文标题:iOS定时器后台运行

          本文链接:https://www.haomeiwen.com/subject/fckvgftx.html