如果我是Android面試官二
呼,明明感覺很累,但是看眼日曆今天才週三。因開會耽誤了晚間的跑步,早點到家來更一篇吧。
四 Fragment用嗎,簡單的說說你對它的理解
Fragment主要是用於一個Activity的多元化。有時候根據產品需求,要求一個頁面能夠根據配置展示不同的樣式和排版。這時就是Fragment大顯身手的的時候了。常用新增方法還是動態新增。通過FragmentManager獲取transaction,通過transaction新增到指定佈局上,之後提交transaction。
小技巧:如果想讓fragment也有返回棧的效果,需要在transaction替換佈局之後,提交之前,加上一句addToBackStack(null)。之後再按返回鍵發現fragment也進入返回棧了。
Fragment經常拿來和Activity作對比,因為二者有著極其相似的功能以及生命週期,但是卻又細有區別。
Fragment的生命週期同樣可以分為四種狀態
1 執行狀態
當一個碎片是可見的,並且它所關聯的活動也正處於執行狀態,該碎片也處於執行狀態。
2 暫停狀態
當一個活動進入暫停狀態時,與之關聯的碎片也進入暫停狀態。
3 停止狀態
當一個活動進入停止狀態時,與之關聯的碎片也進入停止狀態。或者通過呼叫transaction的remove,replace等方法將碎片從活動中移除。總的來說,進入停止狀態的碎片對使用者來說是完全不可見的,有可能被系統回收。
4 銷燬狀態
碎片總是依附於活動,當活動被銷燬時,碎片也進入銷燬狀態。或者使用transaction將碎片移除時,也會進入銷燬狀態。
相比於活動的生命週期回撥方法,碎片增加了額外的方法
onAttach方法。當碎片和活動建立關聯時呼叫。
onCreateView方法。為碎片建立檢視時呼叫。
onActivityCreated方法。確保與碎片相關聯的活動一定已經建立完畢時呼叫。
onDestroyView方法。當與碎片關聯的檢視被移除時呼叫。
onDetach方法。當碎片和活動解除關係的時候呼叫。
一套完整的fragment載入流程為onAttach、onCreate、onCreateView、onActivityCreated、onStart、onResume。
之後移除onPause、onStop、onDestroyView、onDestroy、onDetach。
聊到這裡插一句題外知識,就是android橫豎屏切換遇到的問題。
在預設設定下,橫豎屏切換是會帶來onCreate方法重新呼叫的問題。也就是伴隨著activity中的資料會丟失。如果想要保證切換後資料還在,就要處理資料儲存問題,一般是用saveInstance來解決。
對於螢幕切換問題,常規處理方式如下:
1 通過設定android:screenOrientation屬性來禁止螢幕切換。
2 建立橫豎屏兩種佈局,通過資原始檔標識或者程式碼中判斷的方式來根據不同情況載入不同佈局
3 設定configChange屬性,通過重寫onConfigurationChanged方法可以跳過onCreate等步驟,將佈局切換和資料儲存呼叫放到onConfigurationChanged方法裡來完成
相關文章
- 如果我是Android面試官一Android面試
- 如果我是推薦演算法面試官,我會問哪些問題?演算法面試
- 面試官問我HTTP,我真的是面試HTTP
- 面試官問我Redis叢集,我真的是面試Redis
- 面試官問我MySQL調優,我真的是面試MySql
- 面試官:什麼是二叉樹面試二叉樹
- 我曾經是怎麼做面試官的面試
- 我是如何用 ThreadLocal 虐面試官的?thread面試
- 《我是面試官》設計模式-單例模式面試設計模式單例
- 面試官問我JVM記憶體結構,我真的是面試JVM記憶體
- 假如我是面試官,我會這樣虐你面試
- 『假如我是面試官』RabbitMQ我會這樣問面試MQ
- 面試官問我MySQL索引,我面試MySql索引
- 面試官問我:什麼是JavaScript閉包,我該如何回答面試JavaScript
- 面試官:Java 反射是什麼?我回答不上來!面試Java反射
- 美團面試官問我: ZGC 的 Z 是什麼意思面試GC
- 又被面試官問設計模式了,我真的是面試設計模式
- 如果我是python高手Python
- 我是設計師面試官,你有什麼想問我的?面試
- 面試官:完全揹包都不會,是你自己走還是我送你?面試
- iOS-面試官如果問你performSelector用過沒?iOS面試performSelector
- 征服Android面試官路漫漫(二):OutOfMemoryError 可以被 try catch 嗎 ?Android面試Error
- 當面試遇到 Redis,我作為一個面試官是這麼“刁難”你的!面試Redis
- 如果我是一線技術主管……
- 面試官問我TCP三次握手和四次揮手,我真的是面試TCP
- 我不是一個合格的面試官面試
- 面試官!讓我們聊聊正則面試
- "instanceof 的原理是什麼"?大聲告訴面試官,我知道!面試
- 面試官問,Redis 是單執行緒還是多執行緒?我懵了面試Redis執行緒
- 面試官問我JVM調優,我忍不住了!面試JVM
- 面試官:你給我說一下什麼是時間輪吧?面試
- 面試官問我會不會Elasticsearch,我語塞了...面試Elasticsearch
- 當面試官問我JDK Semaphore的原理時,我笑了面試JDK
- 面試官是如何篩選簡歷?面試
- 面試官:啥是請求重放呀?面試
- 面試官:ZAB協議是什麼?面試協議
- HashMap?面試?我是誰?我在哪?HashMap面試
- 面試官問我按鈕級別許可權怎麼控制,我說v-if,面試官說再見面試