我有一个 voip 应用程序,它也在后台不断运行。当我在后台时,我从主线程调用:(建立网络连接以防我诊断出网络丢失)。
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];
但是,选择器仅在我的应用返回前台时执行。我应该做任何特别的事情来使选择器在后台执行吗?
谢谢
编辑:
-(void) reconectInBackgroundAfterDelay:(NSTimeInterval) dealy
{
NSLog(@"reconectInBackgroundAfterDelay");
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:dealy];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
我改为添加此代码,但在提供的延迟之后仍然没有调用“重新连接”方法。当我已经在后台时,我调用了“reconectInBackgroundAfterDelay”方法。
还有其他建议吗?
编辑 2 找到了解决方案。见下文