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

        ?

        利用接口回調實現(xiàn)Android中Fragment之間的通信

        2017-12-30 12:27:42陸志平胡晨駿
        現(xiàn)代計算機 2017年31期
        關鍵詞:子類數(shù)據(jù)通信服務端

        陸志平,胡晨駿

        (南京中醫(yī)藥大學信息技術學院,南京 210046)

        利用接口回調實現(xiàn)Android中Fragment之間的通信

        陸志平,胡晨駿

        (南京中醫(yī)藥大學信息技術學院,南京 210046)

        Fragment控件是可以嵌入到Activity中的一個UI片段,在項目中它們之間需要進行頻繁的數(shù)據(jù)通信。對比Fragment之間的各種數(shù)據(jù)通信方式,提出利用接口回調實現(xiàn)Fragment之間的數(shù)據(jù)通信。對Fragment的特點,接口回調系統(tǒng)的實現(xiàn)進行系統(tǒng)的闡述,并給出利用接口回調實現(xiàn)Fragment之間數(shù)據(jù)通信的實現(xiàn)過程。

        Android;Fragment;通信;回調

        0 引言

        在Android程序設計中,Activity是最重要的組件之一,它為用戶提供一個交互的界面。但若每個界面切換都采用Activity會降低軟件的運行效率,增加系統(tǒng)開銷。例如新聞客戶端,它包含了多個不同的類別,用戶可以在各個類別之間進行切換。若采用Activity來顯示各個類別的新聞,那每個類別需要建立對應的Activity,每次Activity進行轉換的時候,需要保存當前Activity的狀態(tài)、傳遞信息或者新建Activity,幾十個Activity不斷地進行轉換將耗費較多的資源。

        Android系統(tǒng)引入Fragment來解決此問題。Fragment是碎片、片段的意思。在Android中表示的是一種可以嵌入到Activity中的UI片段,它是Activity的界面中的一部分,可以用于單個Activity上切換多個UI界面,以顯示不同內容[1]。

        1 Fragment控件

        由于Fragment必須被嵌入到一個Activity中,所以它的生命周期受到Activity的生命周期的影響[2]。例如,當Activity暫停時,Activity中所有的Fragment也處于暫停狀態(tài);當Activity被銷毀時,所有隸屬于此Activity的Fragment也會被銷毀。而當Activity處于運行狀態(tài)時,用戶可以獨立的操作每一個Fragment,例如進行添加、刪除等操作。此類操作稱為一個Fragment事務。在程序中,可以將此事務添加到Activity管理的后退棧中,這樣用戶按下Back鍵后,就可以按照回退棧的順序返回上一個事務[3]。

        創(chuàng)建Fragment的方法有靜態(tài)與動態(tài)兩種。靜態(tài)創(chuàng)建就是在Activity的布局文件中通過標簽添加;動態(tài)創(chuàng)建就是在Activity的代碼中創(chuàng)建Fragment的實例,然后將其加入到Activity中的ViewGroup中。

        2 接口回調

        回調是程序設計中的一種雙向調用模式,即被調用方法在被調時也會調用主調對象中的方法[4]。被調方法提供某個功能調用,所以這里將被調方法所在對象稱為服務端;主調對象通過調用服務端提供的方法實現(xiàn)某個功能,所以將主調對象稱為客戶端。由于服務端方法在執(zhí)行過程中還會調用客戶端對象的某個方法,所以在客戶端調用服務端方法時,還需要將客戶端對象作為參數(shù)傳送至服務端。其設計過程如下。

        (1)在客戶端調用服務端的被調方法。回調體系中,在調用的過程中客戶端需將自身對象作為調用方法的參數(shù)傳遞至服務端對象。

        (2)設計服務端的被調方法。在此方法中通過傳遞過來的客戶端對象來回調客戶端的某個方法。

        (3)設計客戶端被回調的方法。

        出于提高代碼的重復利用效率方面考慮,服務端被調函數(shù)中回調客戶端對象方法部分可以設計成接口形式,即只要實現(xiàn)了此接口的對象都可以調用服務端的被調方法[5],而在服務端被調函數(shù)中回調此接口對象的方法即可。

        3 接口回調實現(xiàn)Fragmen之間的通信

        由于Fragment作為Activity的一部分,那不同的Fragment之間必然需要互相通信。Fragment之間當然可以直接進行數(shù)據(jù)通信,并且Android的API中也提供了這樣的功能。例如當前Activity中有兩個Fragment,分別為Fragment1與Fragment2。若在Fragment1中通過代碼實現(xiàn)了到Fragment2的切換,那么Fragment1只能切換到Fragment2,如果要再增加一個Fragment3,那么就要重新編寫Fragment1和Fragment2類的代碼。所以,考慮Fragment的重復使用,所以必須降低Fragment之間或者Fragment與Activity的耦合,并且在Fragment中不應該直接操作別的Fragment對象,因為Fragment操作應該由它的管理者Activity來決定。

        上述問題可以通過回調來實現(xiàn)。原先Activity與Fragment僅是簡單的調用關系,Activity會自動調用Fragment中的方法,在調用過程中Activity會將自身對象傳過去,但并沒有實現(xiàn)回調關系。它們之間實現(xiàn)了Activity-->Fragment這樣一個過程。項目中需要改變Activity與Fragment的子類來實現(xiàn)回調體系。

        首先要明確的是在回調的體系中,哪個是客戶端,哪個是服務端。設計Fragment的目的是讓它集成一些控件,并且完成控件的一些操作,即通過集成的這些控件來完成一些功能。例如列表控件的綁定,點擊事件的處理等。Fragment提供了這些功能來被調用,所以Fragment是被調用端,即服務端。而Activity需要通知Fragmen需要完成什么功能,所以Activity是客戶端,用來提出功能請求的。

        在創(chuàng)建 Fragment對象時,Activity會自動調用Fragment中的方法,例如 onAttach(),onCreatView()等,并且在調用的時候,會將自身作為對象傳進去,所以在項目中需要在Fragment中設計回調?;卣{的過程是這樣的:Activity-->fragment-->Activity,即請求-->處理并回調-->執(zhí)行Activity的回調方法。

        綜上所述,設計Activity與Fragment回調的步驟如下:

        (1)設計一個Fragment的子類作為服務端。

        (2)設計一個接口,此接口就是客戶端需要實現(xiàn)的接口。

        (3)在Fragment子類中設計被調方法,并在方法中進行客戶端的回調,調用客戶端實現(xiàn)的接口方法,在此方法調用中將服務端的數(shù)據(jù)傳送至客戶端Activity。

        (4)創(chuàng)建Activity子類,實現(xiàn)第2步定義的接口中的方法,處理服務端中傳過來的數(shù)據(jù)。

        通過上述的4個步驟,完成了由Activity主導的Fragment之間數(shù)據(jù)通信。

        4 結語

        Fragment通信的方式有多種,例如上面闡述的Fragment之間直接進行數(shù)據(jù)傳輸,也可以利用軟件的公用存儲對象等方式[6],但是本文說闡述的接口回調方式具有效率高、實現(xiàn)簡潔方便、出錯概率小等優(yōu)點,是Fragment之間通信的最優(yōu)方式。

        [1]郭宏志.Android應用開發(fā)詳解[M].電子工業(yè)出版社,2010.

        [2]關晶鑫,李永全.Android中的Activity生命周期[J].電腦知識與技術,2013(11):2713-2715.

        [3]陸志平,胡晨駿.Android應用交互及任務棧處理[J].計算機系統(tǒng)應用,2017,26(6):213-220.

        [4]彭濤,孫連英.回調機制及其在Android應用開發(fā)中的應用[J].北京聯(lián)合大學學報:自然科學版,2013,27(2):68-72.

        [5]牛靖宇,王晨輝,宋世軍,等.計算機軟件系統(tǒng)中基于構件接口實現(xiàn)事件回調的方法:,CN101196813[P].2008.

        [6]夏德冰,陳慶奎.Android應用中一種Activity窗口管理系統(tǒng)[J].計算機系統(tǒng)應用,2012,21(6):224-227.

        Implementation of Communication between Fragment in Android Using Interface Callback

        LU Zhi-ping,HU Cheng-jun
        (College of Information and Technology,Nanjing University of Chinese Medicine,Nanjing 210046)

        The control of Fragment is a UI fragment that can be embedded in the Activity,in the project between them need to carry out frequent data communication.Compared with the various data communication between Fragment,proposes the use of interface callback to achieve Fragment between the data communication.Systematically describes the implementation of Fragment and the interface callback system,and gives the realization process of data communication between Fragment by using interface callback.

        Android;Fragment;Communication;Callback

        1007-1423(2017)31-0084-03

        10.3969/j.issn.1007-1423.2017.31.021

        陸志平(1978-),男,江蘇宜興人,碩士,講師,研究方向為嵌入式技術的發(fā)展與應用

        2017-08-15

        2017-10-20

        猜你喜歡
        子類數(shù)據(jù)通信服務端
        卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計
        基于快牙平臺實現(xiàn)全站儀與計算機的數(shù)據(jù)通信
        工程與建設(2019年3期)2019-10-10 01:40:18
        云存儲中基于相似性的客戶-服務端雙端數(shù)據(jù)去重方法
        監(jiān)測系統(tǒng)接口數(shù)據(jù)通信方式
        新時期《移動Web服務端開發(fā)》課程教學改革的研究
        消費導刊(2018年8期)2018-05-25 13:19:48
        關于對稱共軛點的倒星象函數(shù)某些子類的系數(shù)估計
        在Windows Server 2008上創(chuàng)建應用
        一種高效可靠的串行數(shù)據(jù)通信協(xié)議及處理算法
        TCN實時協(xié)議棧過程數(shù)據(jù)通信研究
        塊H矩陣新的子類
        国产无遮挡又黄又爽在线视频| 特黄做受又粗又长又大又硬| av天堂中文亚洲官网| 国产亚洲精品视频网站| 精品高朝久久久久9999| 日韩激情无码免费毛片| 成人a在线观看| 国产精品久久婷婷婷婷| 日本小视频一区二区三区| 91中文人妻熟女乱又乱| 亚洲av麻豆aⅴ无码电影| 国产成人国产在线观看| 国产精品美女自在线观看| 嫩草伊人久久精品少妇av| 成人在线免费电影| 嫩草影院未满十八岁禁止入内 | 亚欧视频无码在线观看| 精品人妻码一区二区三区红楼视频| 亚洲午夜久久久久久久久电影网| 3d动漫精品啪啪一区二区下载| 久草午夜视频| 国产杨幂AV在线播放| 漂亮人妻出轨中文字幕| 热久久美女精品天天吊色| 亚洲综合欧美日本另类激情| 日本道免费一区日韩精品| 成人性生交大片免费看l| 久人人爽人人爽人人片av| 无码人妻精品丰满熟妇区| 特级毛片a级毛片在线播放www| 日本一区二区三区中文字幕视频| 久久一区二区三区少妇人妻| 影音先锋中文字幕无码资源站 | 亚洲色大成在线观看| 亚洲情精品中文字幕99在线| 无码喷潮a片无码高潮| 久久亚洲中文字幕无码| 日本肥老熟妇在线观看| 伊人久久精品亚洲午夜| 欧美精品中文字幕亚洲专区| 午夜精品久视频在线观看|