gpt4 book ai didi

ios - 为什么 NSTimer 可以在后台模式下延迟?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:35 24 4
gpt4 key购买 nike

我的应用程序在后台运行,并在一定时间后使用 NSTimer 启动音频。我和我的测试人员对此没有问题,音频可以在后台几个小时后(>10 小时)启动。

我的问题是一些用户报告音频经常延迟,有时延迟几分钟,有时延迟一个小时。

我做了类似的事情:

UIApplication * app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:nil];

dispatch_async(dispatch_get_main_queue(), ^{
theTimer = [NSTimer scheduledTimerWithTimeInterval:[theDateIWant timeIntervalSinceNow] target:self selector:@selector(playAudio) userInfo:nil repeats:NO];
});

我的问题是:

-NSTimer 是否可以被系统延迟那么多?如果是这样如何解决这个问题?-如何重现此类问题?- 使用以下内容是否更安全?

theTimer = [[NSTimer alloc] initWithFireDate:theDateIWant interval:0.0 target:self selector:@selector(playAudio) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:theTimer
forMode:NSDefaultRunLoopMode];

感谢您的帮助!

最佳答案

在我看来,您对后台任务的理解有点不对。

当第一个片段被执行时(我假设你把它放在 applicationDidEnterBackground 方法中),它说系统

I have a small task to perform, please wait for a while till i finish it!

系统会等待约5-10分钟后暂停申请。

如果您需要某种报警,可以使用LocalNotification在指定时间播放特定声音。

关于ios - 为什么 NSTimer 可以在后台模式下延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com