2012-03-17 3 views
0

사용자가 모바일 장치의 BACK 키를 클릭 할 때 AsyncTask를 취소하는 다음 코드를 사용합니다.AsyncTask에서 progressdialog 처리

protected class UploadFiles extends AsyncTask<String, String, String> implements OnDismissListener { 

private ProgressDialog mDialog; 

protected void onPreExecute() { 

super.onPreExecute(); 
mDialog = new ProgressDialog(UploadFiles.this); 
mDialog.setMessage(progressMsg); 
mDialog.setCancelable(true); 
mDialog.setOnDismissListener(this); 
mDialog.show(); 

} 

protected String doInBackground(String... params) { 

........ 
........ 

} 

public void onDismiss(DialogInterface dialog) { 

this.cancel(true); 
} 

protected void onCancelled() { 

cancel(true); 

} 

위의 구현은 사용자가 모바일 장치의 BACK 단추를 클릭 할 때 AsyncTask를 취소합니다.

작업이 오래 걸리므로 사용자가 모바일 장치의 뒤로 단추를 클릭 할 때 작업을 취소할지 여부를 경고 (경고)하고 싶습니다.

progressdialog가 표시되면 에 BackPressed()의 BACK 버튼 콜백이 표시되지 않습니다. & 사용자가 뒤로 버튼을 클릭합니다.

내가하지 안드로이드 에뮬레이터에서 삼성 태블릿 P6200 &에 직면 한 또 다른 문제 :

해서 ProgressDialog는 사용자가해서 ProgressDialog 영역 외부 화면을 터치 & 표시되면해서 ProgressDialog는 일축.

진행률 표시를 닫지 않으려면 어떻게해야합니까?

동일한 구현을위한 제안/힌트가 도움이 될 것입니다. 당신이 다음을 취소하지 않을 것이다 대화 외부 도청 setCancelable(false)를 사용하는 경우

}

답변

0

.

그리고 당신은, AsyncTaskProgressDialog#show()를 호출해야 ProgressDialog가 보유하고 애니메이션을 사용하기 때문에 스레드의 EventHandler가에서 실행 중입니다. 당신이 3 개 스레드가 총 필요가이 경우에 그래서.

해서 ProgressDialog를 기각하는

+0

주셔서 감사합니다. AsyncTask에서 onPreExecute()에서 mDialog.show()를 호출하고 있습니다. 사용자가 뒤로 버튼을 클릭 할 때 경고를 표시하는 방법? – chiranjib

+0

'setOnCalcelListener()'사용 –

1

먼저

mDialog.setCancelable (사실)를 제거 (이 안드로이드 정말 디자인 버그);

코드를 입력 한 다음 요구 사항에 따라이 코드를 시도하십시오.

private class DownloadQuestion extends AsyncTask<String, Void, String> 
    {   

     @Override 
     protected void onPreExecute() 
     { 

      pd = ProgressDialog.show(Activity_SplashScreen.this, "","Please wait. Loading latest questions...", true,false);      

      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(String... urls) 
     { 
      //Write background code here Code 
      return ""; 
     } 

     @Override 
     protected void onPostExecute(String response1) 
     { 
      Intent intent = new Intent(Activity_SplashScreen.this, Activity_Main.class); 
      startActivity(intent); 
      finish(); 

      if (pd != null && pd.isShowing()) 
       pd.dismiss(); 

     } 
    } 
1

당신은 대화 폐쇄에서 멀리 도청 뒤로 버튼 또는 중지 setCancelable(false)를 사용할 수 있습니다.

경고를 표시하려면 사용자가 닫을 때 알림을 받으려면 setOnCancelListener() 또는 setOnDismissListener()을 구현해야합니다. 사용자가 취소 할 경우 AsyncTask를 취소해야합니다. 그렇지 않으면 대화 상자가 닫히더라도 AsyncTask가 실행 중일 때도