Activity和Fragment生命週期變化

2022-09-13 13:42:09 字數 1884 閱讀 1906

情形一:啟動應用載入activity和fragment

activity::oncreate

fragment::onattach

fragment::oncreate

fragment::oncreateview

fragment::onactivitycreate

activity::onstart

fragment::onsatrt

activity::onresume

fragment::onresume

情形二:fraga->fragb->fraga(fragment不加入回退棧)

銷毀fragmenta:

啟動fragmentb:

銷毀fragmentb:

啟動fragmenta:

啟動過程如下

onattach

oncreate

oncreateview

onactivitycreate

onsatrt

onresume

銷毀過程如下:

onpause

onstop

ondestroyview

ondestroy

ondetach

在不加入回退棧的情況下,無論多少fragment之間的切換,都遵循啟動下乙個,銷毀上乙個的原則,在螢幕不旋轉的情況下activity是不會發生任何變化的

情形三:旋轉fragment(與加不加入回退棧沒關係,過程都一樣)

activity和fragment都會被銷毀,其中銷毀過程fragment會儲存狀態

fragment::onpause

activity::onpause

fragment::ons**einstancestate(儲存銷毀前的狀態)

fragment::onstop

activity onstop

fragment::ondestroyview

fragment::ondestroy

fragment::ondetach

activity::ondestroy

建立activity和fragment(與一開始啟動應用過程相同)

activity::oncreate

fragment::onattach

fragment::oncreate

fragment::oncreateview

fragment::onactivitycreated

fragment::onattach

fragment::oncreate

fragment::oncreateview

fragment::onactivitycreated

activity onstart

fragment::onstart

fragment::onstart

activity::onresume

fragment::onresume

fragment::onresume

情形四:fragmenta->fragmentb->fragmenta(兩者都加入回退棧)

停止fragmenta,但是不銷毀,與不加入回退棧相比唯一的不同就是不會被銷毀

fragmenta::onpause

fragmenta::onstop

fragmenta::ondestroyview

啟動fragmentb

"恢復"fragmenta,這種恢復會從fragment的oncreateview開始,重新繪製頁面,所以之前的所有資料都已經不在了,這就涉及到fragment的狀態儲存(下節待續)

oncreateview

onactivitycreated

onstart

onresume

Android入門之01術語Fragments

在android的早期,當它僅在手機上執行且沒有高解析度螢幕時,activity就足以構成ui並與使用者進行互動。然後是平板電腦和高解析度螢幕,建立在手機和平 板電腦上都能正常執行的應用程式變得越來越困難。開發人員面臨艱難的選擇。您選擇功能最弱的硬體作為目標,使其成為最不常見的分母,或者通過根據裝置...

lucene學習之一索引操作 Fragments

class fragments public static final string company domain example.com public static final string bad domain yucky domain.com private string getsendere...

關於activity和返回鍵

在乙個專案中,activity肯定是超過乙個的,此時返回鍵的存在會導致出現上乙個activity。這個雖然方便了使用者,但是,存在一定的隱患,如果沒有對上乙個activity進行處理的話,往往返回的是只需要操作一次的activity,比如乙個軟體的註冊頁面。intent mintent new in...