iOS可访问性-通知速度慢且丢失的问题
我正在使用苹果提供的示例代码来监控可达性——但这仍然让我头疼。顺便说一句,我正在运行iOS 5iOS可访问性-通知速度慢且丢失的问题,ios,reachability,Ios,Reachability,我正在使用苹果提供的示例代码来监控可达性——但这仍然让我头疼。顺便说一句,我正在运行iOS 5 // Initialise hostReach = [[Reachability reachabilityForInternetConnection] retain]; [hostReach startNotifier]; 以及 而且 //Called by Reachability whenever status changes. - (void) reachabilityChanged: (
// Initialise
hostReach = [[Reachability reachabilityForInternetConnection] retain];
[hostReach startNotifier];
以及
而且
//Called by Reachability whenever status changes.
- (void) reachabilityChanged: (NSNotification *) note
{
NSLog (@"reachabilityChanged");
[self updateConnectionStatus];
}
别忘了
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog (@"applicationWillEnterForeground");
[self updateConnectionStatus];
}
我已经使用它一段时间了,但是我想在应用程序中以一种非平凡的方式处理可达性,例如在网络不可用时使用缓存数据
第一个问题是,状态更改的通知直到应用程序进入前台后大约10秒才会到达,甚至当应用程序重新进入前台时的手动检查(如上所示)也会返回错误的结果。请从控制台查看此示例日志
2012-02-01 13:31:02.566 myapp[9807:707] applicationWillEnterForeground
2012-02-01 13:31:02.632 myapp[9807:707] Reachability Flag Status: -- ------- networkStatusForFlags
2012-02-01 13:31:02.634 myapp[9807:707] updateConnectionStatus: network not reachable!
2012-02-01 13:31:02.660 myapp[9807:707] reachabilityChanged
2012-02-01 13:31:02.662 myapp[9807:707] Reachability Flag Status: WR t----l- networkStatusForFlags
2012-02-01 13:31:02.663 myapp[9807:707] updateConnectionStatus: network reachable!
我都试过了
hostReach = [[Reachability reachabilityWithHostName:@"www.apple.com"] retain];
以及
这意味着,如果应用程序上次运行时无法访问网络,则恢复的效率低于应用程序使用网络连接再次运行时的效率
这种延误不可避免吗
我的另一个问题是,我的应用程序显然有时没有收到这些通知。这似乎发生在我的应用程序在后台运行了一段时间之后——尽管我不能随意重新创建它
但有时当我回到应用程序时,它收到的最后一个通知是网络无法访问,而且它显然从未看到网络可访问的通知:-(
还有人见过这样的吗
谢谢。为了回答我自己的问题,在一个单独的线程上调用updateConnectionStatus似乎已经解决了这个问题(它似乎可以更可靠地返回正确的状态),不过老实说,我不知道为什么 延迟通知仍然令人讨厌
hostReach = [[Reachability reachabilityWithHostName:@"www.apple.com"] retain];
hostReach = [[Reachability reachabilityForInternetConnection] retain];