当应用程序处于后台状态时,我想让我的应用程序处于活动状态,因为我的 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;
}
});
});
}
}
我只是想知道这是正确的做法吗?或者会有一些其他的方法来实现这一点,因为这个过程需要太多的电池和不必要的位置更新。所以请帮我解决这个问题。
提前致谢。