iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
1
Mobile Development

程式初學:Android與Kotlin系列 第 27

Day 27--Lifecycles and logging(下)

  • 分享至 

  • xImage
  •  

fragment的lifecycle與activity類似,但多了幾個專屬於fragment的

觀察fragment啟動時的lifecycle

  1. onAttach(),當fragment與其所屬activity關聯時
  2. onCreate(),作用類似activity的onCreate(),但除了inflate layout
  3. onCreateView(),fragment的inflate layout
  4. onActitityCreated(),當fragment所屬之activity onCreate()完成後,接著fragment onActitityCreated(),然後fragment才能存取其所屬activity
  5. onStart(),讓fragment變可見,與activity的onStart()同時
  6. onResume(),讓fragment has focus,與activity的onResume()同時

再來切換到其它fragment,觀察原本TitleFragment

  1. onPause(),當fragment lost focus,與activity的onPause()同時
  2. onStop(),當fragment不再顯示於螢幕,與activity的onStop()同時
  3. onDestroyView(),收回fragment的View所佔用的資源

再切回原本的fragment

因為fragment仍在此activity中,所以開始的onAttach()與onCreate()就不再呼叫了
將從onCreateView()開始
不清楚這裡是否就是fragment不同於activity,要把define跟inflate layout分開在onCreate()和onCreateView()

觀察按home鍵與最近程式返回,fragment的lifecycle模式都與activity一樣
進background都是onPause() onStop()
回foreground都是onStart() onResume()


另外同時加上activity的log,同時觀察二者
開啟時

切換別的fragment時

換原本fragment時

按home讓app進background時

叫回foreground時


  • 需要進行越頻繁越輕的運作,應該放越上方的區塊,例如頻繁切換app時,一下onPause一下onResume
  • 相對越下方的區塊,負責越重的運作,例如重新啓動app,onCreate負責inflate layout,define listeners等比較繁重的工作,只會在activity初始化時執行一次

參考


上一篇
Day 26--Lifecycles and logging(中)
下一篇
Day 28--Complex lifecycle situations
系列文
程式初學:Android與Kotlin30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言