【发布时间】: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