2012-11-21 5 views
3

진행 대화 상자가 나타납니다. 비동기 작업이 완료된 후, doInBackground에서 웹 서비스를 호출하고 XML을 구문 분석합니다. xml이 더 큰 파일 인 경우 활동은 몇 초 동안 기다려야합니다.비동기 작업 진행 대화 상자가 너무 늦게 표시됩니다.

@Override 
protected void onPreExecute(){ 
    super.onPreExecute(); 
    completed=false; 
    this.progressDialog.show(); 

} 

@Override 
protected Boolean doInBackground(Integer... params) { 
    t=HttpHelper.callWebService(url, soapAction,xml); 
    if (t.equals("")){ 
     return false; 
    } 
    else { 
     try { 
      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser sp = spf.newSAXParser(); 
      XMLReader xr = sp.getXMLReader(); 
      XMLHelperFile myXmlHelperFile = new XMLHelperFile(); 
      xr.setContentHandler(myXmlHelperFile); 
      InputSource is = new InputSource(new StringReader(CallWebFile.t)); 
      xr.parse(is); 
      mesaj = myXmlHelperFile.getParsedData(); 
      completed=true; 
    } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return true; 
    } 

} 

@Override 
protected void onPostExecute(Boolean result) { 
    super.onPostExecute(result); 
    if (completed==true && progressDialog.isShowing()) progressDialog.dismiss(); 
} 


@Override 
protected void onProgressUpdate(Integer... values) { 
    super.onProgressUpdate(values); 


    } 
} 

답변

1

그냥 추측하십시오. preExecute에서 진행 대화 상자()

+0

이 whed 통화 기능 \t 공공 CallWebFile (해서 ProgressDialog해서 ProgressDialog, 정수 ID)를 초기화 { \t this.progressDialog 내부 publishProgress(some int value);으로 publishProgress를 호출 누락 초기화 = progressDialog; \t id = Id; – user1269301

+0

더 많은 코드를 게시 할 수 있습니까? – arjoan

0

당신은 당신의 doInBackground()

관련 문제