王 寧,高 光,劉會會
(1.周口師范學院計算機科學與技術學院,河南周口466001;2.周口師范學院網(wǎng)絡工程學院,河南周口466001)
基于Android平臺的社團服務應用研究與實現(xiàn)
王 寧1,高 光2,劉會會1
(1.周口師范學院計算機科學與技術學院,河南周口466001;2.周口師范學院網(wǎng)絡工程學院,河南周口466001)
在移動互聯(lián)網(wǎng)浪潮下,Android智能手機已經(jīng)成為高校師生的日常通訊工具.基于Android平臺的高校社團服務應用不但可增強學生的參與度與互動性,提高社團管理的效率,而且可為管理層的決策提供數(shù)據(jù)支持.為此,提出了一種通用原生Android應用開發(fā)框架模型,并在此基礎上完成了高校社團服務應用主要功能模塊的設計與實現(xiàn).測試結果表明,該應用運行效果良好,整體上具有較好的性能和內(nèi)存優(yōu)化功能.
Android;移動互聯(lián)網(wǎng);社團服務;應用開發(fā)
隨著基于Android平臺的智能移動設備的普及,人們的日常生活正在發(fā)生全方位的變化.特別由于其強大的網(wǎng)絡通信與接入功能、靈活的可升級能力以及便捷的可操作性,相應的應用領域也越來越寬廣,尤其在高校中,使用比例日益增高.社團是高校校園文化的重要載體,是高校第二課堂的重要組成部分,師生的參與度非常高.研究并實現(xiàn)基于Android平臺的社團應用,有助于學生了解社團文化、參加社團活動、管理社團信息,也便于管理員進行社團活動的統(tǒng)一管理,提高社團辦事效率.此外,其所具備的數(shù)據(jù)統(tǒng)計、數(shù)據(jù)挖掘、數(shù)據(jù)分析等功能也對管理層的決策分析有一定的輔助作用.
1.1 Android系統(tǒng)架構
筆者闡述的應用開發(fā)建立在Android系統(tǒng)平臺之上,Android系統(tǒng)包括了Linux內(nèi)核層、系統(tǒng)運行庫層、應用程序框架層和應用程序?qū)?,其中Linux內(nèi)核層是硬件與軟件之間的抽象層,主要用于驅(qū)動管理、內(nèi)存管理、進程管理、網(wǎng)絡管理等;系統(tǒng)運行庫層包括類庫和Android運行時組件兩個部分;應用程序框架層專門為應用程序開發(fā)而設計,允許開發(fā)人員訪問核心應用程序所使用的API框架;應用程序?qū)邮茿ndroid系統(tǒng)自帶的一系列使用Java語言編寫的核心應用程序[1].Android系統(tǒng)架構如圖1所示.
圖1 Android系統(tǒng)架構圖
1.2 相關工作
由上述分析得出Android應用開發(fā)是建立在應用程序框架層的基礎之上,開發(fā)者通過應用開發(fā)框架提供的組件進行上層應用開發(fā)并與底層進行功能交互.以下介紹在此框架上設計實現(xiàn)的幾個重要基礎類.
1.2.1 BaseActivity
BaseActivity類是對基礎組件Activity類的封裝,它本質(zhì)上繼承自Activity類,具備基本的監(jiān)聽并處理用戶交互事件、對UI界面的管理等功能,進一步擴展了Activity類的功能,加入了事件總線、偵聽觸發(fā)等機制,通過派生個性化的BaseActivity子類可以實現(xiàn)不同功能需求,多個BaseActivity子類之間通過堆棧結構進行管理,充分體現(xiàn)了面向?qū)ο蟮脑O計原則[2].
1.2.2 MyApplication
MyApplication類是對基礎組件Application類的封裝,MyApplication類采用單例模式提供了一個全局唯一的應用類實例,開發(fā)者可以在其中重載多個重要的系統(tǒng)函數(shù)(如OnCreate(),onTerminate()等)來實現(xiàn)自身程序的特殊需求,并且可以將全局變量定義在該類內(nèi)部以便在應用程序中調(diào)用.
1.2.3 NetManager
NetManager類是自定義的網(wǎng)絡管理類,通過該類可對基礎組件NetHandler進行統(tǒng)一管理,網(wǎng)絡消息是以獨立線程的方式進行處理,根據(jù)與服務器端協(xié)商定義的網(wǎng)絡協(xié)議派生出不同的NetH-andler子類,在NetManager類中對這些子類進行同一管理并完成與主線程之間的異步通信,簡化了原始組件中數(shù)據(jù)處理的復雜性,降低了系統(tǒng)耦合度.
1.2.4 EventManager
EventManager類是自定義的事件管理類,在應用程序開發(fā)框架中各個模塊之間的通信是高頻事件,Android系統(tǒng)原始的通信機制較為復雜且耦合度較高,用戶自定義數(shù)據(jù)更不易處理.通過EventManager類提供的事件傳遞接口,開發(fā)者可自定義任意數(shù)據(jù)類型的事件用以不同應用模塊之間的通信,也適用于多線程間的數(shù)據(jù)通信.
1.2.5 DataManager
DataManager類是自定義的數(shù)據(jù)管理類,負責對抽象的數(shù)據(jù)實體類進行統(tǒng)一的管理和緩存操作,將對外接口封裝為統(tǒng)一函數(shù)方便調(diào)用,提高了數(shù)據(jù)存取速度和管理效率.
1.2.6 Utils
Utils類是自定義的工具類,采用單例模式實現(xiàn),將系統(tǒng)中的常用功能(如字符串解析、時間日期轉(zhuǎn)換、正則匹配等)封裝為全局的靜態(tài)函數(shù)以便在應用模塊中調(diào)用完成輔助功能[3].
2.1 開發(fā)環(huán)境
相對于傳統(tǒng)的Eclipse開發(fā)環(huán)境,Android-Studio開發(fā)環(huán)境具有以下優(yōu)點:
1.AndroidStudio屬于Google為Android量身定做的IDE,未來還將不斷優(yōu)化完善.
2.最新版本的AndroidStudio響應速度更快,運行更為穩(wěn)定.
3.強大的UI編輯器,擺脫了在Eclipse環(huán)境下進行UI編輯的局限性,具有所見即所得的功能.
4.智能提示和補全等功能可極大地提高開發(fā)效率.
5.整合了Gradle構建工具,可更有效地對程序進行配置、編譯與打包.
6.更完善的插件系統(tǒng)和版本控制系統(tǒng).
2.2 基礎模塊封裝
對于上層應用開發(fā)者來說,雖然Android系統(tǒng)的應用程序框架層提供了多種開發(fā)組件,但是如果要快速開發(fā)一個具有良好擴展性與可維護性的應用項目,仍然需要對許多復雜的功能進行二次封裝,否則將不能專注于應用框架設計的本身[4].
在筆者闡述的通用開發(fā)框架中,基礎模塊與關鍵功能性模塊被封裝為類庫,對外統(tǒng)一提供開放性接口,進而可方便開發(fā)者在此基礎上做二次應用開發(fā).這些模塊主要包括以下幾類:
1.注解模塊:提供了UI組件與Activity之間的交互通道(包括UI組件注冊和UI事件響應等).
2.網(wǎng)絡模塊:提供精簡而統(tǒng)一的網(wǎng)絡通信接口(包括回調(diào)處理方式)以減少網(wǎng)絡通信開發(fā)的工作量.
3.圖片加載模塊:提供統(tǒng)一的圖片緩存及加載接口,以方便本地與遠程圖片的加載管理.
4.數(shù)據(jù)庫模塊:提供對本地數(shù)據(jù)庫的統(tǒng)一處理接口以減少繁瑣的原始操作編程.
2.3 MVC框架
對于應用開發(fā)框架而言,良好的可擴展性和低耦合度是開發(fā)高質(zhì)量應用的根基.在筆者闡述的應用開發(fā)架構中,MVC是業(yè)務邏輯、數(shù)據(jù)緩存以及視圖界面之間交互的橋梁,其結構如圖2所示.
圖2 通用框架MVC結構圖
下面著重介紹其中三個模型的作用與設計原理.
1.Controller控制器:在數(shù)據(jù)層與視圖層之間通過事件通知機制進行交互,具有橋梁作用.其本身建立在Android基礎組件Activity之上,主要處理關鍵的業(yè)務邏輯和交互功能.
2.Model數(shù)據(jù)模型:主要通過Entity類做數(shù)據(jù)模型抽象,Dal作為數(shù)據(jù)接口層的作用是進行數(shù)據(jù)緩存以及對外提供統(tǒng)一的數(shù)據(jù)訪問接口.
3.View視圖層:在基礎模塊封裝中通過注解方式與Activity組件進行交互,包括視圖元素訪問和視圖交互事件響應.
此外,為了提高框架的整體功能與可擴展性,在上述三大模塊基礎上設計以下輔助模塊:Net-Manager(網(wǎng)絡管理器,用于統(tǒng)一管理網(wǎng)絡通信協(xié)議類庫);Utils(工具類庫,用于實現(xiàn)字符串匹配解析、文件處理、字體管理等功能);Controls(控件類庫,用于通用可移植View控件管理);EventManager(事件管理器,用于事件驅(qū)動交互管理).
整體上,通用Android應用開發(fā)框架具有系統(tǒng)耦合度較低、系統(tǒng)擴展性較好、可移植性強且易于維護的優(yōu)點,特別適于具有一定規(guī)模的多人協(xié)作項目的開發(fā)[5].
3.1 數(shù)據(jù)流抽象
對數(shù)據(jù)流的統(tǒng)一抽象能保證前后端開發(fā)的一致性,而提高開發(fā)效率,則應做到數(shù)據(jù)庫、服務器數(shù)據(jù)模型、通信協(xié)議數(shù)據(jù)模型以及客戶端數(shù)據(jù)模型統(tǒng)一化,以便于進行網(wǎng)絡數(shù)據(jù)轉(zhuǎn)換和對象關系映射[6].根據(jù)對社團活動的需求分析與數(shù)據(jù)抽象化處理的面向?qū)ο笤O計思想,其抽象數(shù)據(jù)類如圖3所示.
3.2 通信協(xié)議
根據(jù)需求分析,社團移動應用中不存在實時性極高的通信需求,因而宜選擇基于http協(xié)議的短鏈接通信方式[7].在處理通信協(xié)議的編程方式中,則應采用面向?qū)ο笏枷耄瑢⒚總€獨立的通信協(xié)議處理器抽象為NetHandler子類對象,由網(wǎng)絡管理器NetManager統(tǒng)一管理,并與業(yè)務邏輯主線程之間通過事件消息機制進行數(shù)據(jù)交互.相應的網(wǎng)絡通信協(xié)議類如圖4所示.
3.3 業(yè)務邏輯
業(yè)務邏輯模塊是社團應用的功能主體部分,主要包括首頁、社團主體、活動主體、公告、個人和管理員等模塊,其中每個模塊又包括若干子模塊,具體列舉分析如下.
1.首頁模塊主要負責用戶的初始引導功能,包括以下幾個子模塊:
(1)滾動歡迎視圖邏輯:用戶首次打開應用時在客戶端調(diào)用優(yōu)化用戶體驗.
(2)用戶注冊邏輯:用戶首次使用應用時需注冊個人信息到服務器端.
(3)用戶登錄邏輯:用戶進入應用時需提交個人信息到服務器端驗證身份登錄.
圖3 抽象數(shù)據(jù)類圖
圖4 網(wǎng)絡通信協(xié)議類圖
2.社團主體模塊用于實現(xiàn)社團各項主要功能,包括以下幾個子模塊:
(1)社團主頁邏輯:所有創(chuàng)建成功的社團信息以列表形式顯示,并以置頂方式顯示推廣中的熱門社團,界面如圖5所示.
(2)社團詳情邏輯:點擊指定的社團信息可進入社團詳情(包括社團Logo、社團標簽、社團成員信息、社團相冊、社團簡介和社團公告等).
(3)社團管理邏輯:社長可以進行社團基本信息的修改、圖片的上傳或刪除、社團成員信息的查看、加入或退出社團請求的審批、社團公告的發(fā)布等操作.
(4)社團應用邏輯:社員可以查看社團基本信息與社團成員信息,并發(fā)送退出社團請求;普通用戶僅具有查看社團基本信息與發(fā)送加入社團請求的權限.
3.活動主體模塊用于實現(xiàn)活動各項主要功能,包括以下幾個子模塊:
(1)活動主頁邏輯:所有社團相關的活動信息以列表形式顯示,并以置頂方式顯示推廣中的熱門活動.
(2)活動詳情邏輯:點擊指定的活動信息可進入活動詳情(包括活動Logo、活動標簽、活動成員信息、活動相冊、活動宣傳公告等).
(3)活動管理邏輯:活動所屬社團的管理員可以進行活動信息的發(fā)布、活動基本信息的修改、活動圖片的發(fā)布、活動成員信息的查看、加入或退出活動請求的審批、社團公告的發(fā)布等操作.
(4)活動應用邏輯:用戶可以查看活動基本信息與成員信息,并可發(fā)送加入或退出活動請求.
(5)公告模塊:實現(xiàn)服務器公告功能,由社聯(lián)管理員統(tǒng)一編輯發(fā)布,將重要信息通知到所有用戶.
(6)個人信息模塊:實現(xiàn)用戶個人資料管理功能,用戶可編輯個人信息并保存到服務器端,界面如圖6所示.
(7)管理員模塊:提供給社團聯(lián)合會的后臺管理員使用的功能.在該模塊中管理員可以審批所有的創(chuàng)建社團申請,開展社團活動申請,審核成員信息,維護社團數(shù)據(jù).
圖5 社團主界面圖
圖6 用戶信息界面圖
3.4 數(shù)據(jù)統(tǒng)計與分析
社團成員包括絕大部分高校師生,服務器端數(shù)據(jù)存儲量較大,在處理數(shù)據(jù)的過程中應采用多節(jié)點數(shù)據(jù)存儲方式將不同類型數(shù)據(jù)分類存儲[8];此外,在中間層應通過ORM模型與Cache層作為橋接模塊,同時采用分布式服務器方式將邏輯服務器與數(shù)據(jù)分析服務器分離[9].數(shù)據(jù)統(tǒng)計及分析模塊有以下功能.
1.數(shù)據(jù)統(tǒng)計:統(tǒng)計當前所有用戶、社團、活動的基本數(shù)據(jù)信息;統(tǒng)計每一個社團的訪問率與社團服務的利用率;統(tǒng)計社團活動舉辦頻率與社團活動參與度;統(tǒng)計用戶加入或退出社團活動的信息等.
2.數(shù)據(jù)分析:根據(jù)數(shù)據(jù)統(tǒng)計結果,通過管理層數(shù)據(jù)分析需求模型,實時分析社團熱度、活動效果、用戶活躍度、用戶喜好、營銷推廣效果等項,并通過量化做出衡量指標.
3.數(shù)據(jù)決策:根據(jù)數(shù)據(jù)分析結果,為管理層決策做輔助智能支撐,決策人員可以在此基礎上進行二次分析以做出最優(yōu)決策.
根據(jù)軟件工程測試流程對開發(fā)完成的應用系統(tǒng)進行測試,具體測試流程如下.
1.功能模塊測試:根據(jù)邏輯劃分編寫測試用例,按照用戶使用流程著重針對網(wǎng)絡數(shù)據(jù)傳輸速度、資源文件異步加載、UI組件刷新過程、功能邏輯正確性、并發(fā)壓力等部分進行黑盒和白盒測試[].
2.Android性能測試:使用第三方Android測試工具對社團應用進行性能測試,內(nèi)存測試和CPU測試結果如圖7和圖8所示.
圖7 內(nèi)存測試結果圖
圖8 CPU測試結果圖
測試結果表明,該應用運行穩(wěn)定,通信響應及時,并能正確完成邏輯功能,具有較好的性能和內(nèi)存優(yōu)化效果,達到上線發(fā)布標準.
筆者提出了一種基于Android平臺的通用應用開發(fā)框架,闡述了相關應用開發(fā)的基本設計思想和技術手段;并在此基礎上設計并實現(xiàn)了具有功能完善、性能優(yōu)良的校園社團管理應用.整體上,該框架具有較好的應用性、穩(wěn)定性和擴展性,適合基于Android平臺的中小型項目研發(fā),具有較好的應用前景.
[1]彭鳳凌,王洪輝.Android手機與內(nèi)網(wǎng)PC通信系統(tǒng)的設計與現(xiàn)實[J].計算機工程與設計,2013,34(7):2333-2337.
[2]楊炳保.基于Android的移動云計算技術的研究[J].計算機技術與發(fā)展,2013,23(8):52-54.
[3]張長青,晏西國,卜慶凱.基于移動互聯(lián)網(wǎng)的APP與服務器之間的通信設計[J].青島大學學報,2015,30(2):5.
[4]蔡菁.基于Android平臺的數(shù)據(jù)同步技術的研究與實現(xiàn)[D].重慶:重慶郵電大學,2011.
[5]王哲敏.移動互聯(lián)網(wǎng)背景手機服務型APP產(chǎn)品設計分析[J].工業(yè)設計,2015(08):65.
[6]李琛.移動互聯(lián)網(wǎng)時代購物APP交互界面設計研究[D].開封:河南大學,2014.
[7]杜吉志,徐明昆.Android系統(tǒng)內(nèi)存管理研究及優(yōu)化[J].軟件,2012,24(5):69-80.
[8]馬越.Android的架構與應用[D].北京:中國地質(zhì)大學,2008:330-357.
[9]姚昱旻,劉衛(wèi)國.Android的架構與應用開發(fā)研究[J].計算機系統(tǒng)應用,2008,77(11):99-111.
[10]高巍.Android操作系統(tǒng)軟件自動化測試方案的設計與實施[D].北京:北京郵電大學,2012:440-479.
TP311.1
A
1671-9476(2017)02-0127-04
10.13450/j.cnkij.zknu.2017.02.032
2016-11-01;
2016-12-12
周口師范學院青年基金重點項目(No.zknuB3201601);周口師范學院青年基金重點項目(No.zknuB315204)
王寧(1982-),男,河南周口人,助教,碩士,研究方向為移動計算、圖形學與可視化計算.