- (void)openCountdown {
// 判断用户有没有登录
if ([OJPNSUserDefaultsTools isLogin]) {
// 如果登录了则一直更新坐标
[OJPNSUserDefaultsTools setIsUpdateLocation:YES];
}
else {
// 没有登录则不更新
[OJPNSUserDefaultsTools setIsUpdateLocation:NO];
}
// NSLog(@"Location_啦啦啦啦--开始更新用户位置了.....");
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0);
// 每秒执行一次 总时长10分钟
NSTimeInterval seconds = 10*60.f; //10*60.f;//20;
NSDate *endTime = [NSDate dateWithTimeIntervalSinceNow:seconds];
// 最后期限
dispatch_source_set_event_handler(_timer, ^{
int interval = [endTime timeIntervalSinceNow];
if (interval > 0) {
// 更新倒计时
NSString *timeStr = [NSString stringWithFormat:@"%d秒", interval];
dispatch_async(dispatch_get_main_queue(), ^{
// NSLog(@"Location_距离下次更新用户位置时间还剩%@",timeStr);
});
}
else {
// 倒计时结束,关闭
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
// 重复执行 如果当前在更新用户位置信息,则重复执行
if ([OJPNSUserDefaultsTools getIsUpdateLocation]) {
[OJPNSUserDefaultsTools setIsUpdateLocation:NO];
OJPMainTabBarController *mainTabBar = [OJPMainTabBarController shareViewController];
UINavigationController *oneNav = mainTabBar.childViewControllers[0];
OJPNewHomeMapViewController *oneHome = oneNav.viewControllers[0];
[oneHome configLocationManagerRequestUnderway:NO];
}
});
}
});
dispatch_resume(_timer);
}
网友评论