我對兩個活動的生命週期之間有點混淆。按Back按鈕後Android Activity的生命週期
假設我有活動A和B.活性
B稱爲從即A ----> B
。
現在當前B
是在屏幕上,我按下了後退按鈕。在這裏,我想知道: - 有沒有任何內存仍可用於B
(活動)或B
的內存已刷新(未激活)。
我對兩個活動的生命週期之間有點混淆。按Back按鈕後Android Activity的生命週期
假設我有活動A和B.活性
B稱爲從即A ----> B
。
現在當前B
是在屏幕上,我按下了後退按鈕。在這裏,我想知道: - 有沒有任何內存仍可用於B
(活動)或B
的內存已刷新(未激活)。
假設有一個活動A,您可以從該活動啓動活動B.如果在活動B中您點擊後退按鈕,則會將活動B彈出堆棧並且B不再位於活動堆棧中。
每當您將活動推入堆棧時,onCreate
被調用,並且如果您按回按鈕,則調用onDestroy
,這意味着該活動被刷新。
請訪問我瞭解更多信息博客: http://upadhyayjiteshandroid.blogspot.in/2013/02/android-lifecycle.html
請訪問更多
http://developer.android.com/guide/components/tasks-and-back-stack.html
http://developer.android.com/training/basics/activity-lifecycle/starting.html
第一個鏈接真的很有幫助。謝謝。 –
1 like for this –
我必須添加一件重要的事情,也許有人會尋找:按下後退按鈕onSaveInstanceState()不會被調用。 –
活動B將被銷燬並不再保留在內存中。
欲瞭解更多信息,請訪問official documentation for android並查看活動生命週期圖。
一旦你按下後退鍵,活動的onDestroy()方法將被調用,活動將被刷新出內存。然後您將被要求通過調用startActivity()方法重新啓動該活動,該方法將依次調用其onCreate()方法。
如果可以的話,請編輯您的答案並提供所有信息,謝謝。 – fasteque
在按下後調用onDestroy
方法。然後,活動將從活動返回堆棧彈出。
如果活動暫停或停止,系統可以通過要求它完成從下降記憶活動,或者乾脆殺死它的進程。當它再次顯示給用戶時,它必須完全重新啓動並恢復到以前的狀態。
onDestroy()
from docs:
你的活動之前,您會收到最終的通話將被破壞。這可能是由於活動正在完成(有人稱爲
finish()
或系統暫時爲銷燬此活動的實例以節省空間。您可以使用isFinishing()
方法區分這兩個方案。
這裏是一個應用程序的鏈接,你讓你在Android活動的生命週期好主意
我建議參考的活動週期以下鏈接
http://stackoverflow.com/a/8516056/3110609
以下鏈接爲激活模式年。
www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode
按下後退按鈕後,活動B將被銷燬。您會看到,Android管理活動如Stack(an explanation of a stack)。每次你開始一個活動,它都會進入活動棧。因此,當活動A調用活動B時,活動B現在位於活動B的頂部,並且當您按下後退按鈕時,它也在活動堆棧中彈出。所以在概念上,活動B已經消失。按Home按鈕不同於按下後,它暫停活動,因此它仍然吃一點手機的記憶。
Here是Android如何管理活動的很好解釋。
按下後退按鈕後,會調用以下活動回調方法。
onPause()
onStop()
onDestroy()
活動被破壞。
它再次啓動時重新創建。這些是再次啓動時的回調方法。
onCreate()
onStart()
onResume()
'onDestroy'方法在回推後被調用,然後我猜它應該被刷新。 – SMR
@SMR你能提供更多的細節(任何鏈接)。 –
每個活動都進入堆棧執行,從堆棧中移除活動,從中按下按鈕。平均活動B從堆棧中移除。 – 2014-02-25 10:48:44