同學在做一個關於gps定位的app,需要用到沒間隔一定時間返回一次位置信息的功能,故收集了一些相關資料。
首先了解一蘋果後臺運行的機制: http://mobile.51cto.com/iphone-281284.htm
http://blog.csdn.net/ssihc0/article/details/7240495
http://www.2cto.com/kf/201312/261962.html
配置plist文件如圖。
然後添加代碼如下:
#pragma mark 程序需要後臺運行加入的代碼
- (void)applicationDidEnterBackground:(UIApplication *)application{
UIApplication* app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
});
[NSThread detachNewThreadSelector:@selector(testbackground1) toTarget:self withObject:nil];
//用這行代碼測試一下能不能後臺,查看能不能每10秒鐘打印@“1”
}
-(void)testbackground1{
while (1) {
sleep(10);
NSLog(@"1");
}
}