2011-03-16 59 views
0

爲了保留資源並防止內存泄漏,每當應用程序從一個活動轉到另一個活動時,我都會在onPause事件中調用finish()。我認爲它工作正常,但是當我嘗試旋轉屏幕時,應用程序崩潰 - 錯誤是「重複完成請求」 如何防止這種情況,onPause事件中是否有方法檢測應用程序是否要進行下一個活動或只是改變方向? 是否有更好的方法來保存內存然後使用完成?在方向更改期間onPause崩潰時調用完成的活動

感謝您的幫助!

回答

1

這裏只是一個黑暗的鏡頭,但是你在你的onPause實現中調用super.onPause()嗎?

12

您可以嘗試Intent.FLAG_ACTIVITY_NO_HISTORY標誌。只要新活動出現在他們面前,這將盡快結束您的活動。

當你開始一個活動,您可以把這個變成一個意圖:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivity(intent); 

,或者你可以將它設置在你的清單讓你的活動總是隨身攜帶此標誌:

android:noHistory="true" 

爲屬性在該活動的<activity ... />標記中。

這樣,您可以避免嘗試撥打中的finish。我認爲這比試圖確定框架何時會自動調用finish更好。

+0

謝謝,它幫助了很多! – Peter 2011-03-16 19:37:27

+0

謝謝,我只是didi它!我試圖「投票」,但我沒有聲望15 ... – Peter 2011-03-16 20:34:17

+0

謝謝,非常非常 - 最簡單的解決方案 – 2012-12-09 17:04:55

2

測試你是否活動已經完成this.isFinishing()(這是你的活動)?

+0

哦,太棒了!我不知道這件事。 – 2011-03-16 20:37:18

相關問題