2012-01-09 3 views
2

내 앱이 시작되면 Asyn Task 기능을 호출합니다. 백그라운드 프로세스에서 3 개의 API 및 구문 분석 함수가 실행되면 10 분 정도 걸릴 것입니다.블록 Asyn 작업 실행 중

사용자가 안드로이드 기본 뒤로 버튼을 클릭하면, asyn 태스크가 취소 될 때 사용됩니다. 이 문제를 방지하려면 다음과 같이 뒤로 버튼 동작을 차단하려고했습니다.

class First_Time_Sync extends AsyncTask<Void, Void, Void> 
    { 
     ProgressDialog dialog1 = new ProgressDialog(Progressss.this); 

     protected void onPreExecute() 
     { 
      backMode = true; 
      dialog1.setMessage("Welcome \nThank you for waiting."); 
      dialog1.setIndeterminate(true); 
      dialog1.show(); 
     }  

     protected Void doInBackground(Void... arg0) 
     { 
      .................     
      return null; 
     } 

     protected void onPostExecute(Void unused) 
     { 
      backMode = false; 
      dialog1.dismiss(); 
     } 
    } 

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      if (backMode) 
      { 
       return true; 
      } 
      else 
      { 
       return super.onKeyDown(keyCode, event); 
      } 
     }  
     return super.onKeyDown(keyCode, event); 
    } 

이제 비동기 태스크 기능이 호출되고 사용자가 뒤로 버튼을 클릭하면 진행률 표시 줄이 취소됩니다. 그러나 백그라운드 프로세스가 진행되고 백그라운드 프로세스가 완료 될 때까지 뒤로 버튼이 차단되었습니다.

뒤로 단추를 눌러도 진행률 표시 줄을 표시하면 사라지지 않을 수 있습니다.

이 작업을 수행하는 방법에

......

+0

10 분을 취소에서 키를 다시 방지 할 수는 뒤로 버튼을 차단하고, 진행 대화 상자 표시가 너무 깁니다. 어쩌면 백그라운드 서비스에서 작업을 수행해야합니까? – barry

답변

4

당신은 거짓

dialog1.setCancelable (거짓)로 대화 상자의 취소 할 속성을 설정해야합니다;

이것은 당신의 대화

+0

감사합니다. @nandeesh. 그 작품 :) –