2012-06-15 119 views
0

我用下面的代碼來啓動activity:不知何故Android的活動恢復

Intent intent = new Intent(XXX.this, YYY.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(data); 

,我不知道爲什麼,XXX的onResume()方法被調用。 因爲我試圖彈出一個progressDialogonResume(),我得到了以下錯誤:

`android.view.WindowLeaked: Activity XXX has leaked window [email protected] that was originally added here.` 

在調試模式下,我設置了breakpoint在方法onResume()的第一線,它永遠不會停在那裏,但我仍然得到上面的錯誤。

爲什麼會發生這種情況?

+0

你不應該調用startActivity(intent),而不是startActivity(data)? – Xono

+0

看到這個問題:http://stackoverflow.com/q/2850573/844882 –

回答

0

因爲onResume是Activity生命週期的一部分,所以無論這是否是第一次創建Activity,都會調用它。如果你想在用戶返回時打開一個對話框,你應該把這個行爲放在重新啓動而不是onResume上。

編輯:沒有看到您的對話框創建代碼,很難說出什麼原因導致錯誤。但是,請確保您正在調用showDialog並從onCreateDialog返回創建的對話框,而不僅僅是在onResume中創建對話框本身。

+0

它是mProgressDialog = ProgressDialog.show(this,「」,getResources()。getString(R.string.notice_login_server),true,false); – newme

+0

如果使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,則調用onresume而不是onrestart – newme