2013-10-12 61 views
3

我熟悉的「可達性」類,以檢查是否有互聯網連接: https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.csMonoTouch的 - 入門通知時,網絡狀態改變

我現在想知道是否有任何方式得到通知時,網絡狀態已更改? 假設我的收藏在沒有互聯網的情況下被加載。圖像不會被加載。如果iPad突然再次獲得互聯網連接,我想再次觸發下載。

在可達性類,我看到下面的代碼:

public static event EventHandler ReachabilityChanged; 

    static void OnChange (NetworkReachabilityFlags flags) 
    { 
     var h = ReachabilityChanged; 
     if (h != null) 
      h (null, EventArgs.Empty); 
    } 

但是,假如我在「的OnChange」方法中設置斷點,這不是當我關掉無線上網呼籲。

任何想法?

問候,馬特

回答

6

好的,我應該自己找到答案。

你應該首先撥打下列功能時,將會收到通知之前:

Reachability.InternetConnectionStatus(); 
Reachability.LocalWifiConnectionStatus(); 
Reachability.RemoteHostStatus(); 

調用其中的3個靜態函數調用將初始化所有必需的對象。這3個對象會在發生變化時收到通知,並在Reachability調用中調用「OnChange」(它通知您的事件處理程序)。

(關當然,更好的是創建初始化所有需要的對象特殊的功能,這樣你就不需要調用這三個函數,因爲他們將真正測試網絡連接的話)

+0

酷男:),完美運作 – arthankamal

2

你應該能夠簡單的事件處理程序添加到ReachabilityChanged事件,像(未測試編譯);

Reachability.ReachabilityChanged += c_ReachabilityChanged; 

static void c_ReachabilityChanged(object sender, EventArgs e) 
{ 
    Console.WriteLine("Here I can handle that network reachability changed."); 
} 
+0

我知道如何添加一個事件處理程序,但斷點永遠不會在「OnChange」中調用,所以它也不會觸發事件。我正在模擬器上測試它,關閉我的筆記本電腦和設備上的Wifi,啓動應用程序,進入設置關閉Wifi並返回到應用程序。我不確定我的測試場景是否好。 – Matt

+0

@Matt對不起,誤解了你當時的問題,然後斷開筆記本計算機的測試工作。如果該課程不適合您,您可以[註冊廣播接收機](http://fizzylogic.nl/2013/08/17/xamarin-android-by-example-monitoring-the-network-status/)監視網絡狀態。 –

+0

不要驚訝你誤解了它,因爲我的話有點混亂(我改變了它)關於事件。您提供的鏈接適用於Android(monodroid),不適用於iOS(monotouch)。我反正把你的鏈接加了書籤,因爲如果我將我的應用移植到Android上,我可以使用它:-) – Matt