2011-06-06 154 views
9

我有一種情況,我加載了一堆圖像。在這個過程中,我試圖顯示一個進度對話框,直到圖像完全加載。我有overridedonBackPressed()方法,這樣當用戶按下後退按鈕時,活動將完成。解散進度對話框

但是,如果我在顯示進度對話框時按下後退按鈕,則不會調用後退鍵事件。所以我試着提供progressDialog.setCancelable(true)。因此,現在允許我忽略進度對話框,但我的後退鍵事件並未被調用,因此我的活動在後臺加載圖像。

那麼當用戶按下後退鍵時,如何使progressDialog和活動停止。

回答

7

使用Dialog.setOnCancelListener取消後臺任務

+3

請下次嘗試更具體。 – 2011-07-02 02:02:14

+1

@MarvinLabs:如何使用? – Deepzz 2012-11-22 12:09:47

1

使用的onkeydown()方法,但是你必須檢查對話框是否顯示,被按下的按鈕是否是「後退」按鈕,你也應該調用super.onKeyDown()以確保默認方法也被執行。

public boolean onKeyDown(int keyCode, KeyEvent event) 

{ 

if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing()) 
{ 
    // DO WHATEVER YOU WANT 
} 

// Call super code so we dont limit default interaction 
super.onKeyDown(keyCode, event); 

return true; 
} 

你能粘貼正確答案的代碼嗎?

+0

我也試過。它沒有工作。 – 2011-06-06 10:19:57

+0

你的答案在哪裏?你能夠停止後臺服務嗎? – 2011-06-06 12:06:45

7

好的。終於找到了解決辦法。

progressDialog.setCancelable(true); 
    progressDialog.setOnCancelListener(new OnCancelListener() { 

     public void onCancel(DialogInterface dialog) { 

     Log.i("inside on cancel","Cancel Called"); 
     finish(); //If you want to finish the activity. 
     } 
    }); 
+1

感謝它幫助我:) – UMAR 2011-07-13 13:49:40

+1

感謝它幫助我.... – ADT 2014-05-17 07:42:05

3

將圖像加載到其他線程中。當用戶指出他們想要取消加載時,設置一個在加載線程處理循環中檢查的標誌。您也可以調用加載線程的interrupt()方法來處理線程停留在wait()或sleep()等情況下的情況。