保持NSTimer运行甚至应用程序在ios的后台运行

时间:2015-03-03 10:10:25

标签: ios iphone background nstimer

即使我的应用程序在后台运行,我也希望在后台继续执行特定的任务。

这是我试过的代码。定时器在后台进入时只会触发一次。

- (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");
}

2 个答案:

答案 0 :(得分:2)

您无法在后台使用计时器。它可能会工作很短的时间,但如果您没有注册的后台模式,您的应用程序将很快进入睡眠模式。

可用模式可能是:

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

查看Background execution documentation了解更多信息

答案 1 :(得分:-2)

- (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];

}

我认为对你的帮助