第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

【Android開發(fā)坑系列】之Fragment

【Android開發(fā)坑系列】之Fragment

這個東西有顧名思義是碎片,和之前的Activity對應(yīng)???:一般情況都會想當(dāng)然的以為進(jìn)程被殺掉之后,F(xiàn)ragment也會被回收其實(shí),F(xiàn)ragment有自己的生命周期,有自己的管理器(FragmentManager),也即:包含F(xiàn)ragment的進(jìn)程被干掉,F(xiàn)ragment不一定會被回收,而是由FragmentManager來決定生死。Q:如何驗(yàn)證上面的說法?A:如果是一般正常的流程“打開-關(guān)閉”軟件,F(xiàn)ragment的確被回收了。但是如果使用“騰訊手機(jī)管家”之類的內(nèi)存清理工具,清理內(nèi)存(實(shí)際上是殺死進(jìn)程),會發(fā)現(xiàn)Fragment沒有被回收,一直緩存著。驗(yàn)證方法如下:緩存Fragment的Tag到本地數(shù)據(jù)庫(可以是xml/sqlite等),然后用FragmentManager.findFragmentByTag(...)是否為Null來驗(yàn)證Framgent是否被回收了。有個奇怪的現(xiàn)狀是:在上面藍(lán)色的情況發(fā)生后,F(xiàn)ramgent和包含他的Activity的生命周期順序都亂套了,原本是:Activity.onCreate-->Fragment.onCreate-->Fragment.onCreateView變成:Fragment.onCreate-->Activity.onCreate-->Fragment.onCreateView猜測是因?yàn)橹苯佑玫腇rament緩存,其onCreate先于父Activity.onCreate執(zhí)行了???:添加Fragment注意事項(xiàng),配置(Configuration?)改變是Android應(yīng)用生命周期的一部分,如果發(fā)生了該事件(屏幕從橫屏換行為豎屏),就會導(dǎo)致Activity被銷毀然后重新創(chuàng)建。就算您在配置文件中設(shè)定Activity為豎屏顯示的 也無法避免,應(yīng)為Android應(yīng)用配置改變的情況有很多種。如果發(fā)生了這種情況,F(xiàn)ragment也會被銷毀然后重新創(chuàng)建。如果您是在運(yùn)行時(在Java代碼中添加Fragment到Activity,不是在Activity的布局文件中聲明的)創(chuàng)建的,則需要額外小心:當(dāng)Activity第一次創(chuàng)建的時候,您需要添加Fragment;當(dāng)由于配置條件改變導(dǎo)致Activity被重新創(chuàng)建則無需再次添加Fragment(系統(tǒng)會自動添加Fragment)。所以問題來了,您如何知道何時應(yīng)該在onCreate函數(shù)中添加Fragment呢??判斷的方法就是檢查?savedInstanceState??參數(shù),如果該參數(shù)為null說明是第一次創(chuàng)建,需要添加Fragment;如果不是null則無需添加。代碼如下:public?class?MyActivity?extends?Activity?{ ????@Override ????protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstnaceState);????????//?Only?add?fragment?if?this?is?the?initial?Activity?creation ????????if?(savedInstanceState?==?null)?{ ????????????FragmentManager?fragmentManager?= ?????????????????????getFragmentManager() ????????????FragmentTransaction?fragmentTransaction?= ?????????????????????fragmentManager.beginTransaction(); ????????????ExampleFragment?fragment?=?new?ExampleFragment(); ????????????fragmentTransaction.add(R.id.fragment_container,?fragment); ????????????fragmentTransaction.commit(); ????????}?else?{????????????//?Don't?add?the?fragment! ????????????//?(and?use?savedInstanceState?to?restore?Activity?state) ????????} ????} }如果您沒有按照上面的方式添加Fragment,則您的應(yīng)用可能會出現(xiàn)一種奇怪的現(xiàn)象,同樣的Fragment添加了多次。
查看完整描述

1 回答

已采納
?
hasty

TA貢獻(xiàn)63條經(jīng)驗(yàn) 獲得超23個贊

感謝分享。

查看完整回答
反對 回復(fù) 2014-11-28
  • 1 回答
  • 1 關(guān)注
  • 4125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號