搜尋

首頁  >  問答  >  主體

ios - 后台定时器定时执行任务问题

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

// 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中文网2809 天前506

全部回覆(1)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 17:30:54

      dispatch_queue_t queue = dispatch_get_main_queue();

    放到主執行緒試試看

    回覆
    0
  • 取消回覆