我希望在应用程序处于后台状态时使我的应用程序处于活动状态,因为我的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;
}
});
});
}
}
我只是想知道这是一种正确的方法吗?或者还有其他方法可以达到这个目的,因为这个过程需要耗费太多电池和不必要的位置更新。所以请帮助我解决这个问题。
提前致谢。
答案 0 :(得分:0)
你不能在后地运行任务更长时间。 IOS允许您仅运行后台任务10分钟(在您的应用程序启动后单击主页按钮)。
答案 1 :(得分:0)
正如您的问题被标记为iOS6! 除非您的应用程序需要任何这些功能,否则您的应用程序无法继续在后台运行。