我希望在后台以10分钟的时间间隔连续呼叫api,而不会在同一个应用程序中中断用户界面和其他api呼叫。
就像api会每10分钟在后端数据库中永久更新我的位置,但这个api不会打断用户界面和其他api,因为我使用应用程序会调用它。
答案 0 :(得分:0)
您应该在不同的线程中运行代码(在iOS中称为Queue)。 如果你阅读文档,它会更好。在这里,我可以向您展示一个示例,在这里我在后台下载图像,然后上传UI:
if let url = imageURL{
DispatchQueue.global(qos: .userInitiated).async { [weak self] in //background queue
let urlContents = try? Data(contentsOf: url)
if let imageData = urlContents{
DispatchQueue.main.async { //come back to the UI Queue to upload the UI
self?.image = UIImage(data: imageData)
}
}
}
}
要了解每个参数和每种可能性,请查看文档。
答案 1 :(得分:0)
您可以像递归方法一样编码来解决您的问题。下面有一个以Objective-c
编码的解决方案- (void)myRepetitiveMethod {
dispatch_queue_t q_background = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
double delayInSeconds = 600;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, q_background, ^(void){
//do something
[self myRepetitiveMethod];
});
}
古德勒克