美文网首页
iOS通过后台标识使程序在后台长久运行

iOS通过后台标识使程序在后台长久运行

作者: silasjs | 来源:发表于2018-03-01 17:35 被阅读31次

    正常情况下,当应用被按Home键退出后,应用仅有最多5秒钟的时间做一些保存或者清理资源的工作。但是应用可以调用UIApplication的beginBackgroundTaskWithExpirationHandler方法,让应用在后台长久的运行。

    让程序在后台长久运行的示例代码如下:
    @interface AppDelegate : UIResponder <UIApplicationDelegate>
    
    @property (strong, nonatomic) UIWindow *window;
    @property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTask;//后台任务标识符
    
    @end
    
    @implementation AppDelegate
    
    - (void)applicationDidEnterBackground:(UIApplication *)application {
        NSLog(@"已经进入后台");
        
        [self beginBackgroundTask];
    
        //需要运行的代码
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            NSLog(@"我还在哦");
            [self endBackgroundTask];
        });
    }
    
    - (void)beginBackgroundTask {
        self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
            //如果系统觉得我们还是运行了太久,将执行这个程序块,并停止运行应用程序
            [self endBackgroundTask];
        }];
    }
    
    - (void)endBackgroundTask {
        //告诉系统我们完成了
        [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
        self.backgroundTask = UIBackgroundTaskInvalid;
    }
    
    @end
    

    如果不使用后台标识的话,GCD中的log不会打印。

    相关文章

      网友评论

          本文标题:iOS通过后台标识使程序在后台长久运行

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