2014-09-23 50 views
0
public static var iStatus:Boolean; 

public static function initMonitor():void 
{ 
    var url:URLRequest = new URLRequest('http://www.nature.com') ; 
    url.method = "HEAD"; 
    _monitor = new URLMonitor(url); 
    _monitor.addEventListener(StatusEvent.STATUS, announceStatus); 
    _monitor.pollInterval = 1000; 
    _monitor.start(); 

} 

public static function announceStatus(event:StatusEvent):void 
{ 
    if(_monitor.available) 
    { 
     iStatus=true; 
    } 
    else 
    { 
     iStatus=false; 
    } 
} 

問題是,當我最初運行沒有互聯網連接的應用程序時,它返回狀態false。如果我打開互聯網連接,則返回狀態true。但是,如果我再次關閉互聯網連接,它不會返回狀態false。此時,它不會進入announceStatus方法。當互聯網在Flex中不可用時,URLMonitor未檢測到

我認爲announceStatus應該每次打開或關閉互聯網連接時都會被調用,但它不會像那樣工作。任何建議都會有幫助。

+0

我剛剛測試了代碼,它似乎工作正常。我可以啓動它,關閉/打開連接,並通過'announceStatus'方法看到它改變'iStatus'。你如何斷開/重新連接互聯網連接? – Marcela 2014-09-23 14:49:16

+0

@Marcela你在方法announceStatus中添加一個斷點,然後打開互聯網連接,你會看到控制將到達該斷點,現在關閉連接,並看到控制不會來there.this是問題.. 。當我們關閉互聯網連接然後有狀態改變,所以announceStatus方法應該被調用,但是這沒有發生。 – Raju 2014-09-25 05:51:25

+0

我按照你的步驟列出了他們,我完全沒有問題。每次連接發生變化時都會觸發斷點。再一次,你如何關閉/關閉互聯網連接? – Marcela 2014-09-25 12:56:40

回答

0
public static var iStatus:Boolean; 

public static function initMonitor():void 
{ 
    NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange); 
    onNetworkChange(); 
} 

protected function onNetworkChange(e:Event):void 
{ 
    _monitor = new URLMonitor(new URLRequest('http://www.nature.com')); 
    _monitor.addEventListener(StatusEvent.STATUS, announceStatus); 
    _monitor.pollInterval = 1000; 
    _monitor.start(); 
} 

public static function announceStatus(event:StatusEvent):void 
{ 
    if(_monitor.available) 
    { 
     iStatus=true; 
    } 
    else 
    { 
     iStatus=false; 
    } 
} 
+1

您應該考慮添加對更改的說明。 – Gwen 2016-11-15 15:00:18