999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2017-12-30 12:27:42陸志平胡晨駿
現(xiàn)代計算機 2017年31期
關(guān)鍵詞:方法設(shè)計

陸志平,胡晨駿

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

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

陸志平,胡晨駿

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

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

Android;Fragment;通信;回調(diào)

0 引言

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

Android系統(tǒng)引入Fragment來解決此問題。Fragment是碎片、片段的意思。在Android中表示的是一種可以嵌入到Activity中的UI片段,它是Activity的界面中的一部分,可以用于單個Activity上切換多個UI界面,以顯示不同內(nèi)容[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 接口回調(diào)

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

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

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

(3)設(shè)計客戶端被回調(diào)的方法。

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

3 接口回調(diào)實現(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來決定。

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

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

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

綜上所述,設(shè)計Activity與Fragment回調(diào)的步驟如下:

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

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

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

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

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

4 結(jié)語

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

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

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

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

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

[5]牛靖宇,王晨輝,宋世軍,等.計算機軟件系統(tǒng)中基于構(gòu)件接口實現(xiàn)事件回調(diào)的方法:,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-),男,江蘇宜興人,碩士,講師,研究方向為嵌入式技術(shù)的發(fā)展與應用

2017-08-15

2017-10-20

猜你喜歡
方法設(shè)計
何為設(shè)計的守護之道?
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
學習方法
瞞天過海——仿生設(shè)計萌到家
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 999在线免费视频| 久草中文网| 在线毛片免费| 免费av一区二区三区在线| 亚洲五月激情网| 日本三级欧美三级| 国产91丝袜在线播放动漫| 欧美精品成人| 国产主播一区二区三区| 亚洲制服丝袜第一页| 蜜芽一区二区国产精品| 亚洲综合一区国产精品| 成人av手机在线观看| 国产尤物jk自慰制服喷水| 国产精品福利导航| 国产永久无码观看在线| h视频在线观看网站| 福利视频一区| 国产激爽大片在线播放| 91亚洲视频下载| 亚洲bt欧美bt精品| 国模在线视频一区二区三区| 在线观看国产精品一区| 国产精品.com| 亚洲一区国色天香| 亚洲国产亚洲综合在线尤物| 日韩视频免费| 26uuu国产精品视频| 久久综合伊人 六十路| 大香伊人久久| 99re在线免费视频| 亚洲色无码专线精品观看| 亚洲欧美自拍中文| 国产精品三级专区| 久久亚洲美女精品国产精品| 免费在线色| 中文字幕在线日本| 欧美色综合网站| 一级毛片免费高清视频| 欧洲高清无码在线| 国产靠逼视频| 欧美午夜在线播放| 亚洲精品无码久久久久苍井空| 亚洲日韩AV无码一区二区三区人| 一区二区三区精品视频在线观看| 在线免费亚洲无码视频| 午夜视频免费一区二区在线看| 久久99国产综合精品1| 国产人成午夜免费看| 国产女人喷水视频| 亚洲一级毛片| 国产精选小视频在线观看| 国产人成乱码视频免费观看| 国产精品页| 天天综合色网| 免费国产高清视频| 综合天天色| 香蕉蕉亚亚洲aav综合| 国产精品亚洲综合久久小说| 亚洲爱婷婷色69堂| 亚洲精品自在线拍| 午夜日本永久乱码免费播放片| 激情综合五月网| 91在线精品麻豆欧美在线| 国产农村1级毛片| 精品国产Av电影无码久久久| 国产一在线观看| 国产一区亚洲一区| 超碰精品无码一区二区| 精品国产成人国产在线| 欧美午夜视频在线| 久久精品人人做人人爽| 91香蕉视频下载网站| 日韩黄色在线| 精品伊人久久久久7777人| 欧美成人综合视频| 无码aaa视频| 特黄日韩免费一区二区三区| 国产成人无码Av在线播放无广告 | 久久国产乱子| 色135综合网| 午夜无码一区二区三区|