2011-08-09 9 views
1

버튼 클릭만으로 sqlite 데이터베이스에서 데이터를 가져 오는 응용 프로그램을 디자인하고 있습니다. 프로세스가 길어질 때만 가져 오기 시간 동안 대기 메시지 나 진행률 표시 줄을 표시하고 싶습니다. 그렇지 않으면 프로그램으로 진행할 수 있습니다. 어떻게해야합니까? PLSS 당신이 AsyncTask를 사용해야 진행 표시 줄을 표시하기위한 모든긴 작업 중에 만 표시되는 진행 표시 줄

protected void GetOrders() 
{ 
    ProgressDialog dialog = null; 
    try 
    { 
     dialog=ProgressDialog.show(loginScreen.this,"PLEASE WAIT","LOADING CONTENTS ..",true); 
     //Accesses database 
     allOrders=ProductionOrdersBL.GetOrder(); 
     Thread.sleep(4000); 

    } 
    catch(Exception e){} 
    finally 
    { 
     dialog.dismiss(); 
    } 
} 

답변

0

사용) (postExecute에서 다음

try{ 
thread.sleep(3000); 
dialog=ProgressDialog.show(loginScreen.this,"PLEASE WAIT","LOADING CONTENTS ..",true); 

}catch(){ 
} 

을 말한다. 따라서 doInBackground() 메서드가 UI가 아닌 스레드에서 실행되는 동안 UI 스레드는 execute 메서드 호출을 따르는 코드를 계속 실행하기 만했습니다. 솔루션은 execute 메서드 호출 다음에 주 UI 스레드에서 아무 작업도 수행하지 않는 것입니다 :)

1

첫 도움 .... 내가 다음 코드를 사용하여 진행 대화 상자를 보여주는 시도했지만 그것은 단지 아무것도 표시하지 않고 지정된 수면 시간과 진행을 기다립니다() (this). 다음의 preExecute() 방법 나는 execute 메소드의 호출 후 일부 작업을했다 ... 나는 해결책을 발견

if(dialog.isShowing()){ 
dialog.dismiss 
} 
+0

고마워요. ntc .... – Saiesh

+0

안녕하세요, 아직도 붙어 있습니다 .... 완전히 완료되기 전에도 AsyncTask의 doInBackground() 메소드가 postExecute 메소드로 돌아갑니다. 어떻게 중지합니까? – Saiesh

+0

thats something something .. 그것은 결코 일어나지 않을 것입니다. 거기에 다른 문제가있을 수 있습니다, 서버에서 데이터를 가져 오는 동안 예외가있을 수 있습니다. 항상 postExecute()는 doInBackground()가 완료된 후에 만 ​​호출됩니다. – ngesh