ホームページ  >  に質問  >  本文

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中文网2741日前455

全員に返信(1)返信します

  • 大家讲道理

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

    リーリー

    メインスレッドに置いてみてください

    返事
    0
  • キャンセル返事