2014-02-25 34 views
14

我對兩個活動的生命週期之間有點混淆。按Back按鈕後Android Activity的生命週期

假設我有活動A和B.活性

B稱爲從即A ----> B

現在當前B是在屏幕上,我按下了後退按鈕。在這裏,我想知道: - 有沒有任何內存仍可用於B(活動)或B的內存已刷新(未激活)。

+1

'onDestroy'方法在回推後被調用,然後我猜它應該被刷新。 – SMR

+0

@SMR你能提供更多的細節(任何鏈接)。 –

+1

每個活動都進入堆棧執行,從堆棧中移除活動,從中按下按鈕。平均活動B從堆棧中移除。 – 2014-02-25 10:48:44

回答

41

假設有一個活動A,您可以從該活動啓動活動B.如果在活動B中您點擊後退按鈕,則會將活動B彈出堆棧並且B不再位於活動堆棧中。

每當您將活動推入堆棧時,onCreate被調用,並且如果您按回按鈕,則調用onDestroy,這意味着該活動被刷新。

stack

請訪問我瞭解更多信息博客: http://upadhyayjiteshandroid.blogspot.in/2013/02/android-lifecycle.html

activity lifecycle 請訪問更多

http://developer.android.com/guide/components/tasks-and-back-stack.html

http://developer.android.com/training/basics/activity-lifecycle/starting.html

+1

第一個鏈接真的很有幫助。謝謝。 –

+0

1 like for this –

+2

我必須添加一件重要的事情,也許有人會尋找:按下後退按鈕onSaveInstanceState()不會被調用。 –

2

活動B將被銷燬並不再保留在內存中。

欲瞭解更多信息,請訪問official documentation for android並查看活動生命週期圖。

一旦你按下後退鍵,活動的onDestroy()方法將被調用,活動將被刷新出內存。然後您將被要求通過調用startActivity()方法重新啓動該活動,該方法將依次調用其onCreate()方法。

+2

如果可以的話,請編輯您的答案並提供所有信息,謝謝。 – fasteque

5

在按下後調用onDestroy方法。然後,活動將從活動返回堆棧彈出。

From docs:

如果活動暫停或停止,系統可以通過要求它完成從下降記憶活動,或者乾脆殺死它的進程。當它再次顯示給用戶時,它必須完全重新啓動並恢復到以前的狀態。

onDestroy()from docs

你的活動之前,您會收到最終的通話將被破壞。這可能是由於活動正在完成(有人稱爲finish()或系統暫時爲銷燬此活動的實例以節省空間。您可以使用isFinishing()方法區分這兩個方案。

enter image description here

0

我建議參考的活動週期以下鏈接

http://stackoverflow.com/a/8516056/3110609 

以下鏈接爲激活模式年。

www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode 
0

按下後退按鈕後,活動B將被銷燬。您會看到,Android管理活動如Stack(an explanation of a stack)。每次你開始一個活動,它都會進入活動棧。因此,當活動A調用活動B時,活動B現在位於活動B的頂部,並且當您按下後退按鈕時,它也在活動堆棧中彈出。所以在概念上,活動B已經消失。按Home按鈕不同於按下後,它暫停活動,因此它仍然吃一點手機的記憶。

Here是Android如何管理活動的很好解釋。

8

按下後退按鈕後,會調用以下活動回調方法。

onPause() 
onStop() 
onDestroy() 

活動被破壞。

它再次啓動時重新創建。這些是再次啓動時的回調方法。

onCreate() 
onStart() 
onResume()