2012-04-12 58 views
3

對於我不想保留在後退堆棧中的活動,我使用屬性noHistory = true。它在Android 2.3.3上工作正常,但在4.0.3上有一個奇怪的行爲。 當屏幕進入睡眠狀態並將其喚醒時,noHistory = true的活動消失了!Android 4.0.3中的noHistory屬性不一致

這是怎麼回事?屏幕醒來後活動是否完成?我以錯誤的方式使用歷史嗎?

回答

2

我只是有同樣的問題今天,我發現這裏的解決方案:

Android: how to return to Activity with "noHistory" attribute after onStop?

事實上,noHistory設置爲true,當屏幕進入睡眠狀態,你的活動是從去除該堆棧,並且在屏幕醒來時不會恢復。

我刪除noHistory =從佈局XML文件真實,只是叫光潔度()時,我的活動調用另一個問題:

Intent intent = new Intent(); 
intent.setClass(this, MainActivity.class); 
this.startActivity(intent); 
finish(); 

這使的伎倆!當我點擊後退按鈕時,以前的活動不會出現。

我不知道是否發生在Android 2.x的問題,但我很肯定是可以正常使用現在同時在Android版本2.x和Android 4.x版

+0

這就是我結束了這樣做。我仍然不理解4.x上的這種行爲。當屏幕進入睡眠狀態時,沒有理由從堆棧中移除活動。 – 2012-04-15 08:55:15

+0

當屏幕關閉時,活動暫停。我在Android 4.x中觀察到的是,在那之後,系統要求完成活動(調用onDestroy()方法)。活動結束後,Android會將其從堆棧中移除。 – 2012-04-15 12:08:09

+0

我之前的評論是不完整的:當屏幕關閉時,活動暫停。我在Android 4.x下觀察到的是,在它之後很快,系統要求完成活動(調用onDestroy()方法)。活動結束後,Android會將其從堆棧中移除,這一點很正常。所以問題是:爲什麼活動被破壞?在我看來,Android 4.x對於暫停的活動更加「積極」,並且迅速殺死它們以恢復內存。 – 2012-04-15 12:17:32

0

可能與屏幕進入睡眠狀態時調用onPause()有關。