应用程序在后台模式下应处于活动状

时间:2013-09-18 06:05:37

标签: iphone ios objective-c ios6

我希望在应用程序处于后台状态时使我的应用程序处于活动状态,因为我的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;
        }
      });
   });
  }
 }

我只是想知道这是一种正确的方法吗?或者还有其他方法可以达到这个目的,因为这个过程需要耗费太多电池和不必要的位置更新。所以请帮助我解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

参考这个 https://stackoverflow.com/a/5326257/1545180

答案 1 :(得分:0)

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

  • 音频 - 该应用在播放时向用户播放可听内容 背景。 (此内容包括流式音频或视频内容 使用AirPlay。)
  • 位置 - 该应用可让用户了解他们的信息 位置,即使它在后台运行。
  • VoIP - 该应用 为用户提供使用电话拨打电话的能力 网络连接。
  • 报亭 -content-该应用是报亭应用 下载和处理杂志或报纸内容 背景
相关问题