保留 NSTimer 运行 即使应用程序在 ios 中进入后台

Keep NSTimer running even application goes in background in ios

我想在后台连续执行特定任务,即使我的应用程序进入后台。

这是我试过的代码。计时器进入后台时仅触发一次。

- (void)applicationDidEnterBackground:(UIApplication *)application
    {
      NSTimer * timer = [NSTimer timerWithTimeInterval:2.0
                                    target:self
                                  selector:@selector(timerTicked)
                                  userInfo:nil
                                   repeats:YES];
            [[NSRunLoop mainRunLoop] addTimer:timer
                                      forMode:NSDefaultRunLoopMode];
    }

- (void) timerTicked 
{
    NSLog(@"Timer method");
}

您不能在后台设置计时器。它可能会工作一小段时间,但如果您没有注册后台模式,您的应用将很快进入睡眠模式。

可用模式可能是:

  • 音频
  • 位置更新
  • 后台获取
  • 其他...

查看 Background execution documentation 了解更多信息

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

    UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
    bgTask = [[UIApplication sharedApplication]
              beginBackgroundTaskWithExpirationHandler:^{
                  [[UIApplication sharedApplication] endBackgroundTask:bgTask];
              }];

   // NotificationTimer  its timer
   // myMethod1 call ur method 

    NotificationTimer = [NSTimer scheduledTimerWithTimeInterval: Interval
                                     target: self
                                   selector:@selector(myMethod1)
                                   userInfo: nil repeats:YES];

}

我觉得对你有帮助