2011-05-13 4 views
0

웹 서비스를 시작하는 동안 진행 대화 상자를 사용하고 웹 서비스의 응답을 기다리고 있습니다. 응답이 나타나면 진행 대화 상자를 닫습니다. 여기에 내가 그것을 위해 사용하는 코드,진행률 대화 상자가 Android에 표시되지 않습니까?

 dialog= ProgressDialog.show(Settings.this, "","Synchronisation with server...", false); 
     request = new SoapObject(NAMESPACE, METHOD_NAME); 
     envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     androidHttpTransport = new AndroidHttpTransport(URL); 

     request.addProperty("mtest","1"); 


     envelope.setOutputSoapObject(request); 
      try 
      { 
       System.gc(); 
       androidHttpTransport.call(SOAP_ACTION, envelope); 
       SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn; 


       } 
       } 

       dialog.dismiss(); 
      } 
      catch (Exception aE) 
      { 
       aE.printStackTrace();; 
      } 

하지만 표시되지 않은 진행, 웹 서비스가 연결하면 내가 요청을 보내는 경우, 응용 프로그램이 유휴 상태로 보인다는 응답을 얻었다 때까지 진행 상황을 표시하지 않습니다 , 나는 약간 진전을 보여줄 필요가있다.

웹 서비스가 연결되어 있지 않으면 진행 상태가 표시되지만 수동으로 닫을 수는 없습니다. 웹 서비스를 진행하는 동안 진행 상황을 별도의 진행 상황 또는 제목 자체의 일부로 표시해야합니다. 아무도 나를 도와주세요.

감사합니다.

답변

1

원격 호출을 처리기로 보조 스레드로 래핑하거나 AsyncTask을 사용하여 작업을 수행하십시오.

이유는 ProgressDialog.Show를 할 때 웹 서비스에 연결하는 것과 같은 스레드 인 다음 업데이트 (UI 스레드)에서 일정을 예약했기 때문입니다. 따라서 웹 서비스가 UI 스레드를 보유하고 있기 때문에 결코 그렇게 할 기회가 없습니다.

0

많은 사람들이이 문제에 직면 해 있습니다. 심지어 같은 문제에 직면합니다. 가장 좋은 해결책은 비동기 작업을 사용하는 것입니다. 청각에 대해서는 sample code입니다. 그것은 당신을 도울 수 있습니다.

관련 문제