6

の値を確認しようとしていますがbackgroundTimeRemaining、非常に大きな数値が得られます。プロパティの値は、約 10 分に相当すると想定されています。アプリがフォアグラウンドにある場合、このような値が大きいことを Apple のドキュメントhereで読みました。ただし、バックグラウンドであっても大きな値が得られます。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
   bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
      [application endBackgroundTask:bgTask];
      bgTask = UIBackgroundTaskInvalid;
   }];

   // Background task
   NSTimeInterval timeRemaining = [UIApplication sharedApplication].backgroundTimeRemaining;
   NSLog(@"Background time remaining: %f seconds (%d mins)", timeRemaining, (int)(timeRemaining / 60));

   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      NSTimeInterval timeRemaining = [UIApplication sharedApplication].backgroundTimeRemaining;
      NSLog(@"Background time remaining: %f seconds (%d mins)", timeRemaining, (int)(timeRemaining / 60));

      // Perform task

      // Finished
      if (bgTask != UIBackgroundTaskInvalid) {
         [application endBackgroundTask:bgTask];
         bgTask = UIBackgroundTaskInvalid;
      }
  });

  // Start location manager
  if ([CLLocationManager locationServicesEnabled]) {          
     [locationManager startUpdatingLocation];
  }
}

何が欠けているのでしょうか?

4

1 に答える 1

3

Xcode から実行する場合、ウォッチドッグ タイマーは無効になります。

接続されていない状態で実行すると、ほとんどの場合適切な値 (つまり 600) が得られますが、それでも時折奇妙な値が得られます。

于 2013-08-15T15:29:25.107 に答える