2012-01-09 60 views
2

當我的應用程序啓動時,我調用Asyn任務函數。在後臺進程中,它會觸發3個API並解析它們的功能,它將花費大約10分鐘的時間。當Asyn任務執行時阻止Android後退按鈕

在這種情況下,如果用戶點擊了android默認後退按鈕,那麼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 2012-01-09 08:09:46

回答

4

您將有對話框的取消屬性設置爲false

dialog1.setCancelable(假);

這將防止返回鍵而取消你的對話框

+0

謝謝@nandeesh。其作品 :) – 2014-06-16 12:22:36