2012-03-27 35 views
2

我知道finish()會將您的活動返回到以前的活動。現在,我很好奇,如果我們能夠完成相反的意義,轉回到下一個沒有實施Intent的活動。這只是一個好奇心問題。完成相反()

這可能嗎?

+0

我不這麼認爲。我認爲在完成之後,GC的維護行爲已經結束,並且已經結束。你應該保持自己的活動。 – mihail 2012-03-27 20:36:44

回答

4

否。當用戶按下「返回」按鈕時,由於調用finish()而導致「您未執行意圖而退回的下一個活動」被銷燬,因此您無法返回。

+0

好的答案謝謝 – sdfwer 2012-03-27 20:42:32

3

不,這是不可能的,一旦你運行完成()(或後退)一個活動,它將從活動堆棧中移除,並收集其內容垃圾,只有通過啓動才能達到的方式與和意圖。

2

簡短回答:不,因爲完成()的活動已被破壞。

龍答:從Activity Documentation

的onDestroy() - 您在活動前收到的最後通話是 銷燬。發生這種情況是因爲該活動結束 (有人叫光潔度()就可以了,或者是因爲系統暫時 破壞活動的這種情況下,以節省空間。

調用完成()實際上並不保證活動的即時GC,但是在完成調用之後不久,您可以認爲活動實例中的任何內容都沒有保留。不要持有對Android說的活動的引用應該是killable,每Activity LifecycleAvoiding Memory Leaks,這是不是一個方法來解決這個問題,並且是一個壞主意(tm)。

你可以重寫OnDestroy()並檢查isFinishing()是否想要將活動歷史記錄存儲在應用程序中,以便您可以手動實現諸如「forward」功能之類的內容,但通常情況下,最好在onSaveInstanceState() 。

0

不,因爲一旦你調用finish()方法,它會破壞相應的活動。伴隨你的任務的唯一方法是使用一個intent。