2014-09-23 11 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에서 인터넷을 사용할 수없는 경우 URL 모니터가 감지되지 않음

나는 인터넷 연결이 켜지거나 꺼질 때마다 announceStatus이 호출되어야한다고 생각하지만, 그렇게 작동하지는 않습니다. 어떤 제안이라도 도움이 될 것입니다.

+0

방금 ​​코드를 테스트 한 결과 정상적으로 작동하는 것으로 보입니다. 시작할 수 있고, 연결을 켜거나 끌 수 있으며'announceStatus' 메서드를 통해'iStatus'를 변경하는 것을 볼 수 있습니다. 어떻게 인터넷 연결을 끊고 다시 연결합니까? – Marcela

+0

@Marcela 메소드 announceStatus에 하나의 중단 점을 추가 한 다음 인터넷 연결을 켜면 해당 중단 점이 표시 될 것입니다. 이제 연결을 해제하고 컨트롤이 나타나지 않습니다.이 문제는 .. 인터넷 연결을 끄면 상태가 변경되므로 announceStatus 메소드가 호출되어야합니다. 그러나 이것은 일어나지 않습니다. – Raju

+0

나는 당신이 그들을 열거 한대로 당신의 단계를 따랐고, 나는 전혀 문제가 없었다. 중단 점은 연결이 변경 될 때마다 트리거되었습니다. 다시 한번 인터넷 연결을 어떻게 끄고 있습니까? – Marcela

답변

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