我不想每 45 秒调用一次我的网络服务。实际上我想要做的是,如果用户播放歌曲,用户开始在我的应用程序中播放一些音乐,每 45 秒应用程序应该同样向 Web 服务发送一个调用,说“用户正在播放歌曲”。我对 iOS 线程一无所知。那么有人能告诉我我该怎么做吗?我需要做线程还是有其他方法可以做到这一点?
谢谢
我不想每 45 秒调用一次我的网络服务。实际上我想要做的是,如果用户播放歌曲,用户开始在我的应用程序中播放一些音乐,每 45 秒应用程序应该同样向 Web 服务发送一个调用,说“用户正在播放歌曲”。我对 iOS 线程一无所知。那么有人能告诉我我该怎么做吗?我需要做线程还是有其他方法可以做到这一点?
谢谢
这里有一些代码可以帮助你。
设置一个NSTimer
地方,比如 in viewDidLoad
,每 45 秒运行一次,执行你的 web 服务调用:
[NSTimer scheduledTimerWithTimeInterval:45.0
target:self
selector:@selector(callService)
userInfo:nil
repeats:YES];
然后实现计时器中使用的选择器,在后台运行一些代码,如你所愿:
-(void)callService
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//Code in this part is run on a background thread, call your service here
});
}
您需要在后台线程上执行此操作。所以它不会影响用户界面。用户可以执行任何其他操作。为此,您可能需要使用NSTimer
and performSelectorInBackground: withObject:
。使用NSTimer
你可以重复调用一个方法。从中调用后台的 Web 服务方法。GCD
也是更好的选择。