iOS 应用层系统层知识

后台运行之UIBackgroundTaskIdentifier

2018-10-29  本文已影响208人  被吹落的风

手机进入后台,会发生以下三种情况

下面讲解第二种情况
//app进入后台后保持运行
- (void)beginTask
{
    _backIden = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        //如果在系统规定时间3分钟内任务还没有完成,在时间到之前会调用到这个方法
        [self endBack]; 
    }];
}

//结束后台运行,让app挂起
- (void)endBack
{
    //切记endBackgroundTask要和beginBackgroundTaskWithExpirationHandler成对出现
    [[UIApplication sharedApplication] endBackgroundTask:_backIden];
    _backIden = UIBackgroundTaskInvalid;
}

//示例
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self beginTask];
    
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    
    self.number = 0;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f repeats:YES block:^(NSTimer * _Nonnull timer) {
        self.number++;
        [UIApplication sharedApplication].applicationIconBadgeNumber = self.number;
        if (self.number == 9)
        {
            [self.timer invalidate];
        }
        
        NSLog(@"%@==%ld ",[NSDate date],self.number);
    }];
}
上一篇 下一篇

猜你喜欢

热点阅读