我已经阅读了可达性框架,但仍然很困惑为什么主机可达的定义是“当数据包......可以离开本地设备时”。
如果可达性返回“是”,那么我似乎仍然需要尝试建立一个套接字连接,直到实际连接为止,我并不知道我的主机已经启动。为什么 Reachability 不使用 Ping 来更好地了解主机是否实际启动?这个框架首先需要什么?
我的猜测是这两个,但如果有人知道使用可达性框架的任何其他原因,请告诉我。
1) 可达性提供回调,当互联网恢复时提供即时通知。发生这种情况时,可以立即尝试套接字连接。然而,在 99% 的应用程序中,每隔几秒尝试一次套接字连接似乎是可以接受的,或者在最坏的情况下,只是在用户执行特定操作时尝试建立连接。诚然,这不是一个理想的解决方案,但我不明白为什么出于这个原因,Reachability 框架真的很有必要。
2) 即使在与服务器建立套接字连接的情况下,Reachability 也会提供有关网络是否为 G3/WiFi 的重要信息。我认为这是唯一一次真正需要可达性,因为它允许根据网络类型优化行为。