【问题标题】:Application should Active while in Background mode应用程序应在后台模式下处于活动状态
【发布时间】:2013-09-18 06:05:36
【问题描述】:

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

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

提前致谢。

【问题讨论】:

  • 您的任务需要在后台运行多长时间?
  • 有一个计时器持续运行直到用户自己不停止它...

标签: iphone ios objective-c ios6


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多