0

当应用程序处于后台状态时,我想让我的应用程序处于活动状态,因为我的 NStimer 和其他操作正在执行。因此,我执行了以下代码来使我的应用程序处于活动状态。

 - (void)applicationWillResignActive:(UIApplication *)application
{
    UIApplication *app = [UIApplication sharedApplication];
     if (backgroundTaskBool==TRUE) 
      {


      bgTask = [app beginBackgroundTaskWithExpirationHandler:^{

    dispatch_async(dispatch_get_main_queue(), ^{

        if (bgTask != UIBackgroundTaskInvalid)
        {
            [app endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        }
    });
}];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    // Do the work associated with the task.

    _locationManager.distanceFilter = 100;
    _locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [_locationManager startMonitoringSignificantLocationChanges];
    [_locationManager startUpdatingLocation];
     dispatch_async(dispatch_get_main_queue(), ^{
        if (bgTask != UIBackgroundTaskInvalid)
        {
            [app endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        }
      });
   });
  }
 }

我只是想知道这是正确的做法吗?或者会有一些其他的方法来实现这一点,因为这个过程需要太多的电池和不必要的位置更新。所以请帮我解决这个问题。

提前致谢。

4

2 回答 2

0

您不能在后台运行任务更长时间。IOS 只允许您运行后台任务 10 分钟(在您的应用程序启动后单击主页按钮后)。

请参阅此 https://stackoverflow.com/a/5326257/1545180

于 2013-09-18T06:52:39.287 回答
0

由于您的问题已标记为 iOS6!除非您的应用程序需要任何这些功能,否则您的应用程序无法继续在后台运行。

  • 音频——应用程序在后台向用户播放可听内容。(此内容包括使用 AirPlay 的流式音频或视频内容。)
  • 位置- 该应用程序让用户随时了解他们的位置,即使它在后台运行时也是如此。
  • VoIP — 该应用程序使用户能够使用 Internet 连接拨打电话。
  • 报亭- 内容——该应用程序是在后台下载和处理杂志或报纸内容的报亭应用程序。
于 2013-09-18T07:01:22.687 回答