2011-09-01 4 views
0

웹 서비스에서 데이터를 가져와야하는 비동기 작업을 구현했습니다. 그러나 장치에 활성 InternetConnection이 없거나 "try"블록에서 아무 것도 발생하지 않으면 예외가 발생하고 응용 프로그램이 다운됩니다. .. 나는 "마지막으로"절을 사용하여 그 동작을 방해하려 ..하지만 디버거는 마지막으로 절비동기 작업에서 시도/잡기

  try{ 
       this.kantinen = new KantinenListe(); 
       Gson gson = new Gson();    
       // SOAP Test 
       String NAMESPACE = "http://tempuri.org/"; 
       String METHOD_NAME = "fullSyncGPS"; 
       String SOAP_ACTION = "http://tempuri.org/IDatenService/fullSyncGPS"; 
       String URL = "Currywurst.svc?wsdl"; 

       SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME); 

       PropertyInfo pi = new PropertyInfo(); 
       request.addProperty("radius",10); 
       request.addProperty("lat", Double.toString(currentLocation.getLatitude())); 
       request.addProperty("lng", Double.toString(currentLocation.getLongitude())); 
       request.addProperty("von", "01.09.2011"); 
       request.addProperty("bis", "05.09.2011"); 

       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
       envelope.dotNet = true; 
       envelope.setOutputSoapObject(request);   

       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
       androidHttpTransport.call(SOAP_ACTION, envelope); 
       SoapPrimitive result = (SoapPrimitive)envelope.getResponse(); 

       String resultData = result.toString(); 


       resultData = "{\"meineKantinen\":"+resultData+"}"; 
       this.kantinen = gson.fromJson(resultData, KantinenListe.class); 
      } 
      catch(Exception e) 
      { 
      //todo: implement 
      } 
      finally 
      { 
       return this.kantinen; 
      } 
+0

finally 블록은 절대로 안타는데, catch 블록은 무엇입니까? 예외가 발생하면 catch 블록이 충돌합니다. – Jack

답변

0
catch(Exception e) 
{ 
    return this.kantinen; 
{ 

가능한 해결책이 될 수 있음을 입력되지 않는 이유는 무엇입니까? 그러나 나는 왜 당신이 마침내 실행되지 않습니다 모르겠다

+0

죄송합니다. Jack, 나는 거기에 귀하의 의견을 보지 못했습니다 : ( – Thomas

0

이 메서드에서 반환하면 this.kantinen 초기화되지 않은 경우 당신이 충돌을 얻을거야. 당신은 적어도 뭔가를 가지고 있는지 확인하십시오 :

KantinenListe kantinen = null; 
0

** 당신은 ** 당신의 처리를 수행 한 후 네트워크 연결을 확인 할 수 있습니다

공공 정적 부울 isNetworkAvailable (컨텍스트 컨텍스트) { 부울 결과 = 거짓;

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo[] networkInfos = cm.getAllNetworkInfo(); 

    for (NetworkInfo tempNetworkInfo : networkInfos) { 

     if (tempNetworkInfo.isConnected()) { 
      outcome = true; 
      break; 
     } 
    } 


    return outcome; 
} 
관련 문제