我熟悉“reachability”类以检查是否存在互联网连接: https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs
我现在想知道在网络状态发生变化时是否有任何方法可以获得通知? 假设在没有互联网的情况下加载我的收藏品。图像不会被加载。如果iPad突然再次连接互联网,我想再次触发下载。
在可达性类中,我看到以下代码:
public static event EventHandler ReachabilityChanged;
static void OnChange (NetworkReachabilityFlags flags)
{
var h = ReachabilityChanged;
if (h != null)
h (null, EventArgs.Empty);
}
但是,如果我在“OnChange”方法中设置断点,则在关闭Wifi时不会调用它。
有什么想法吗?
问候,马特
答案 0 :(得分:7)
好的,我应该自己找到答案。
在收到通知之前,您应首先调用以下功能:
Reachability.InternetConnectionStatus ();
Reachability.LocalWifiConnectionStatus ();
Reachability.RemoteHostStatus ();
调用这3个静态函数调用将初始化所有必需的对象。这些3个对象将在有更改时收到通知,并在可达性调用中调用“OnChange”(通知您的事件处理程序)。
(当然,更好的是创建一个特殊的函数来初始化所有需要的对象,这样你就不需要调用这3个函数,因为它们已经真正测试了网络连接)
答案 1 :(得分:2)
您应该能够简单地向ReachabilityChanged事件添加事件处理程序,例如(未编译的测试);
Reachability.ReachabilityChanged += c_ReachabilityChanged;
static void c_ReachabilityChanged(object sender, EventArgs e)
{
Console.WriteLine("Here I can handle that network reachability changed.");
}
答案 2 :(得分:0)
只需调用即可,可以用AppDelegate编写
Reachability.RemoteHostStatus ();
Reachability.ReachabilityChanged += ReachabilityChanged;
static void ReachabilityChanged(object sender, EventArgs e){//Do Something};