亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android開發(fā)中Activity和Fragment的通信方式分析

        2021-06-30 01:43:42西安電子科技大學(xué)機(jī)電工程學(xué)院郭雨佳韓雨辰趙明英朱俊杰
        電子世界 2021年11期
        關(guān)鍵詞:堆棧控件調(diào)用

        西安電子科技大學(xué)機(jī)電工程學(xué)院 郭雨佳 韓雨辰 趙明英 朱俊杰

        在現(xiàn)有智能手機(jī)操作系統(tǒng)中,Android占絕對(duì)主導(dǎo)地位。Activity是Android四大組件之一,F(xiàn)ragment是一種嵌套在Activity中的UI組件。由于多個(gè)Activity的進(jìn)棧出棧會(huì)造成程序卡頓,所以實(shí)際開發(fā)的時(shí)候,為了達(dá)到更好的用戶體驗(yàn)大多會(huì)使用Fragment來(lái)設(shè)計(jì)用戶交互界面。正因如此,Activity和Fragment之間的通信便顯得尤為重要。本文分析了兩者間的多種通信方式,提出接口回調(diào)方式是進(jìn)行通信的最佳方式。

        在Android程序設(shè)計(jì)中,Activity是重要的控件之一。一個(gè)Activity就代表了應(yīng)用程序中的一個(gè)頁(yè)面。每次點(diǎn)擊頁(yè)面進(jìn)行跳轉(zhuǎn)的時(shí)候,需要將當(dāng)前的Activity的狀態(tài)保存至堆棧,下次使用的時(shí)候再?gòu)亩褩V腥〕鰜?lái)展示給用戶。這樣不斷的進(jìn)出堆棧,將會(huì)導(dǎo)致應(yīng)用程序運(yùn)行過(guò)程中出現(xiàn)卡頓,嚴(yán)重影響用戶體驗(yàn)。為了解決這一問(wèn)題,Android系統(tǒng)引入了Fragment。Fragment并不是一個(gè)獨(dú)立的部分,是一種可以嵌入到Activity中的UI控件。Fragment的出現(xiàn)使在同一個(gè)Activity上進(jìn)行界面的切換成為現(xiàn)實(shí)。

        1 Fragment簡(jiǎn)介

        1.1 創(chuàng)建

        創(chuàng)建Fragment的方法有動(dòng)態(tài)和靜態(tài)兩種。前者就是通過(guò)Java代碼來(lái)創(chuàng)建Fragment的實(shí)例,后者則是在編寫Activity的xml布局文件時(shí)通過(guò)<fragment>標(biāo)簽實(shí)現(xiàn)控件的創(chuàng)建。

        動(dòng)態(tài)創(chuàng)建的具體步驟:

        第一步:在當(dāng)前Activity的布局文件中創(chuàng)建FrameLayout并為其設(shè)置id;

        第二步:鼠標(biāo)移動(dòng)到當(dāng)前包名處并單擊右鍵,選擇new->Fragment->Blank Fragment,創(chuàng)建新的Fragment;

        第三步:在Activity的onCreat()方法中使用代碼將fragment添加到FrameLayout。

        靜態(tài)創(chuàng)建的具體步驟:

        第一步:鼠標(biāo)移動(dòng)到當(dāng)前包名并單擊右鍵,選擇new->Fragment->Blank Fragment,創(chuàng)建新的Fragment;

        第二步:在在xml文件中創(chuàng)建fragment控件,并通過(guò)name屬性引入fragment文件,同時(shí)可以為fragment創(chuàng)建一個(gè)id,以便后續(xù)的使用。

        1.2 Fragment的生命周期

        由于Fragment是嵌入到Activity中的一種控件,所以它不會(huì)單獨(dú)存在,它必須附著到Activity中?;诖?,F(xiàn)ragment的生命周期會(huì)受到Activity生命周期的影響。Fragment和Activity有著相似的生命周期,它會(huì)隨著Activity的暫停而暫停,隨著Activity的銷毀而銷毀。我們就可以對(duì)附著在Activity上面的Fragment進(jìn)行操作的前提是這個(gè)Activity是處于正常運(yùn)行中的。常見的操作有添加、替換和刪除等。Fragment的生命周期如圖1所示。

        圖1 Fragment的生命周期示意圖

        2 Fragment和Activity的通信

        2.1 Activity訪問(wèn)Fragment的控件

        通過(guò)調(diào)用getSupportFragmentManager()函數(shù)可以拿到用來(lái)操作Fragment的Manager,然后通過(guò)它的findFragmentByTag()或者findFragmentById()拿到我們需要通信的Fragment實(shí)例(如果Fragment是直接在XML中定義的,那么就使用findFragmentById()拿到Fragment),然后就可以對(duì)拿到的Fragment進(jìn)行各種操作了。

        2.2 Fragment對(duì)Activity的訪問(wèn)

        我們可以通過(guò)getActivity().findViewById()的方法獲取Fragment附著的Activity中的控件,但是這種方式代碼耦合性太強(qiáng),不利于代碼的移植和優(yōu)化,所以更多情況下采用回調(diào)方法來(lái)進(jìn)行二者的通信。在Fragment中聲明一個(gè)接口并提供一個(gè)接口的引用變量,接口中定義所需的方法,然后讓Activity實(shí)現(xiàn)此接口并按照需要重寫接口中的方法。當(dāng)Fragment需要訪問(wèn)Activity中數(shù)據(jù)時(shí),只需要通過(guò)接口實(shí)例調(diào)用接口方法并將參數(shù)傳遞,具體的操作代碼則在Activity中的接口方法中完成。

        2.3 一個(gè)Activity中多個(gè)Fragment之間的通信和數(shù)據(jù)交換

        由于Fragment是依附于Activity的,所以Fragment之間通信不能直接通信,必須依靠所依附的Activity。為了降低代碼之間的耦合,可以通過(guò)回調(diào)實(shí)現(xiàn)Fragment之間通信。

        3 結(jié)論

        任意Fragment之間要想通信必須通過(guò)他們所屬的Activity來(lái)完成,不能是多個(gè)Fragment之間的直接通信、調(diào)用。同理,F(xiàn)ragment要訪問(wèn)它所附著的Activity中的信息也得在Activity中進(jìn)行。Fragment與其所附著的Activtiy之間通信的最佳方式應(yīng)該是:

        在發(fā)起事件的Fragment中定義一個(gè)接口,接口中聲明你的方法;

        在onAttach()方法中要求Activity實(shí)現(xiàn)接口;

        在Activity中實(shí)現(xiàn)該接口并重寫該方法。

        猜你喜歡
        堆棧控件調(diào)用
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        嵌入式軟件堆棧溢出的動(dòng)態(tài)檢測(cè)方案設(shè)計(jì)*
        基于堆棧自編碼降維的武器裝備體系效能預(yù)測(cè)
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        就這樣玩會(huì)VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        一種用于分析MCS-51目標(biāo)碼堆棧深度的方法
        堆棧技術(shù)及其在程序設(shè)計(jì)中的靈活運(yùn)用
        国精品人妻无码一区二区三区性色| 亚洲国产天堂久久综合网| 东京无码熟妇人妻av在线网址| 黄色毛片视频免费| 亚洲人妖女同在线播放| 一区二区三区免费看日本| 亚洲国产精品成人久久| 亚洲av第一页国产精品| 亚洲韩国在线| 射进去av一区二区三区| 人人妻人人澡人人爽国产一区| 老头巨大挺进莹莹的体内免费视频| 国产精品福利久久香蕉中文| 国产免费人成视频在线观看| 国产强被迫伦姧在线观看无码 | 人妻中文字幕在线网站| 无码人妻黑人中文字幕| 国产精品日本天堂| 日本少妇熟女一区二区| 亚洲乱码日产精品一二三| 俺也去色官网| 色婷婷亚洲一区二区在线| 日本精品一区二区三区福利视频| 国产两女互慰高潮视频在线观看 | 精品系列无码一区二区三区 | 免费在线黄色电影| 亚洲成a人片在线观看天堂无码 | 品色永久免费| 国产精品久久久亚洲第一牛牛| 久久成人精品国产免费网站| 国产播放隔着超薄丝袜进入| 人妻去按摩店被黑人按中出| 亚洲区1区3区4区中文字幕码| 精品国产一区二区三区三级| 品色永久免费| 国产午夜精品美女裸身视频69| 在线国人免费视频播放| 无码少妇一区二区性色av| 国产精品网站夜色| 成人av资源在线观看| 亚洲精品无码久久久|