美文网首页
GCD 定时器 时隔多长时间 执行一次任务

GCD 定时器 时隔多长时间 执行一次任务

作者: 来敲代码 | 来源:发表于2017-08-10 10:12 被阅读29次
@property (nonatomic, strong) dispatch_source_t Timer;
//  加载完成里面创建
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"充电中";
//每隔30秒请求一次数据
[self RefreshData];
}
//  销毁定时器
- (void)viewDidDisappear:(BOOL)animated{

[super viewDidDisappear:animated];

// 取消定时器

if (self.Timer) {

dispatch_cancel(self.Timer);

self.Timer = nil;

}

}

- (void)RefreshData

{

// 获得队列

dispatch_queue_t queue = dispatch_get_main_queue();

// 创建一个定时器(dispatch_source_t本质还是个OC对象)

self.Timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

// 设置定时器的各种属性(几时开始任务,每隔多长时间执行一次)

// GCD的时间参数,一般是纳秒(1秒 == 10的9次方纳秒)

// 何时开始执行第一个任务

// dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC) 比当前时间晚1秒

dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(30.0 * NSEC_PER_SEC));

uint64_t interval = (uint64_t)(30.0 * NSEC_PER_SEC);// 间嗝30秒

dispatch_source_set_timer(self.Timer, start, interval, 0);

// 设置回调

dispatch_source_set_event_handler(self.Timer, ^{

[self queryListOfChargingInformationChargeSeq:self.chargeSeq];

});

// 启动定时器

dispatch_resume(self.Timer);

}

相关文章

网友评论

      本文标题:GCD 定时器 时隔多长时间 执行一次任务

      本文链接:https://www.haomeiwen.com/subject/mjocrxtx.html