ios - 后台定时器定时执行任务问题
PHP中文网
PHP中文网 2017-04-17 17:28:54
0
1
502

参照网上的,但是并没有什么作用,求代码,求解决

// 1.创建一个定时器
// 获取一个全局并发队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
// 第四个参数:传递一个队列,该队列对应了将来的回调方法在哪个线程中执行
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

// 2.指定定时器开始的时间和间隔的时间, 以及精准度
// 开始时间
dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW, 3.0 * NSEC_PER_SEC);

// 间隔时间
uint64_t interval = 1.0 * NSEC_PER_SEC;
// 设置定时器
/*
 第1个参数: 需要给哪个定时器设置
 第2个参数: 定时器开始的时间/DISPATCH_TIME_NOW立即执行
 第3个参数: 定时器开始之后的间隔时间
 第4个参数: 定时器间隔执行的精准度, 传入0代表最精准(尽量的让定时器精准), 传入一个大于0的值, 代表多少秒的范围是可以接受的
 第四个参数存在的意义: 主要是为了提高程序的性能
 注意点: Dispatch的定时器接收的时间是纳秒
 */
dispatch_source_set_timer(timer, startTime, interval, 0 * NSEC_PER_SEC);

// 3.指定定时器的回调方法
/*
 第1个参数: 需要给哪个定时器设置
 第2个参数: 需要回调的block
 */
dispatch_source_set_event_handler(timer, ^{
    NSLog(@"++++++++++++++ %@", [NSThread currentThread]);

});

// 4.开启定时器
dispatch_resume(timer);
PHP中文网
PHP中文网

认证高级PHP讲师

reply all(1)
大家讲道理
  dispatch_queue_t queue = dispatch_get_main_queue();

Try it in the main thread

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template