NSTimer背景后延迟触发

问题描述 投票:1回答:1
timer = [NSTimer bk_timerWithTimeInterval:60 block:^(NSTimer *timer) { ....} repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];


+ (id)bk_timerWithTimeInterval:(NSTimeInterval)inTimeInterval block:(void (^)(NSTimer *timer))block repeats:(BOOL)inRepeats
{
    NSParameterAssert(block != nil);
    return [self timerWithTimeInterval:inTimeInterval target:self selector:@selector(bk_executeBlockFromTimer:) userInfo:[block copy] repeats:inRepeats];
}

+ (void)bk_executeBlockFromTimer:(NSTimer *)aTimer {
    void (^block)(NSTimer *) = [aTimer userInfo];
    if (block) block(aTimer);
}

如果我在几分钟后折叠和展开应用程序,几乎总是计时器立即启动,有时会延迟启动。为什么计时器不能总是立即工作?

ios objective-c background nstimer
1个回答
-1
投票

尝试在您的Appdelegate的“ didFinishLaunchingWithOptions”中添加此内容

__block UIBackgroundTaskIdentifier locationUpdater =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

        [[UIApplication sharedApplication] endBackgroundTask:locationUpdater];

        locationUpdater=UIBackgroundTaskInvalid;

    } ];
© www.soinside.com 2019 - 2024. All rights reserved.