1.Fragment中add與replace的區別(Fragment重疊)ide
參考回答: add不會從新初始化fragment,replace每次都會。因此若是在fragment生命週期內獲取獲取數據,使用replace會重複獲取; 添加相同的fragment時,replace不會有任何變化,add會報IllegalStateException異常; replace先remove掉相同id的全部fragment,而後在add當前的這個fragment,而add是覆蓋前一個fragment。因此若是使用add通常會伴隨hide()和show(),避免佈局重疊; 使用add,若是應用放在後臺,或以其餘方式被系統銷燬,再打開時,hide()中引用的fragment會銷燬,因此依然會出現佈局重疊bug,可使用replace或使用add時,添加一個tag參數;
2.getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之間的區別?佈局
參考回答: getFragmentManager()所獲得的是所在fragment 的父容器的管理器, getChildFragmentManager()所獲得的是在fragment 裏面子容器的管理器, 若是是fragment嵌套fragment,那麼就須要利用getChildFragmentManager(); 由於Fragment是3.0 Android系統API版本纔出現的組件,因此3.0以上系統能夠直接調用getFragmentManager()來獲取FragmentManager()對象,而3.0如下則須要調用getSupportFragmentManager() 來間接獲取;
3.FragmentPagerAdapter與FragmentStatePagerAdapter的區別與使用場景線程
參考回答: 相同點 :兩者都繼承PagerAdapter 不一樣點 :FragmentPagerAdapter的每一個Fragment會持久的保存在FragmentManager中,只要用戶能夠返回到頁面中,它都不會被銷燬。所以適用於那些數據相對靜態的頁,Fragment數量也比較少的那種; FragmentStatePagerAdapter只保留當前頁面,當頁面不可見時,該Fragment就會被消除,釋放其資源。因。
4.談一談Service的生命週期?對象
參考回答:Service的生命週期涉及到六大方法 onCreate():若是service沒被建立過,調用startService()後會執行onCreate()回調;若是service已處於運行中,調用startService()不會執行onCreate()方法。也就是說,onCreate()只會在第一次建立service時候調用,屢次執行startService()不會重複調用onCreate(),此方法適合完成一些初始化工做; onStartComand():服務啓動時調用,此方法適合完成一些數據加載工做,好比會在此處建立一個線程用於下載數據或播放音樂; onBind():服務被綁定時調用; onUnBind():服務被解綁時調用; onDestroy():服務中止時調用;
5.Service的兩種啓動方式?區別在哪?blog
參考回答:Service的兩種啓動模式 startService():經過這種方式調用startService,onCreate()只會被調用一次,屢次調用startSercie會屢次執行onStartCommand()和onStart()方法。若是外部沒有調用stopService()或stopSelf()方法,service會一直運行。 bindService():若是該服務以前還沒建立,系統回調順序爲onCreate()→onBind()。若是調用bindService()方法前服務已經被綁定,屢次調用bindService()方法不會屢次建立服務及綁定。若是調用者但願與正在綁定的服務解除綁定,能夠調用unbindService()方法,回調順序爲onUnbind()→onDestroy();