趙啟升+施琚+唐瑤
摘要:該文介紹的移動教務(wù)系統(tǒng)基于Android平臺構(gòu)建,利用流行的Roboguice注入型框架、ImageLoader圖片加載技術(shù)、AsyncHttpClient網(wǎng)絡(luò)異步請求技術(shù)、JPush推送技術(shù)、HoloGraph圖表繪制等技術(shù)進行開發(fā),同時運用ViewHolder模式、Bitmap壓縮等技術(shù),對“移動教務(wù)系統(tǒng)”進行優(yōu)化。
關(guān)鍵詞:Android;移動教務(wù);性能優(yōu)化;異步加載
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)19-0082-02
目前,我校內(nèi)部校園網(wǎng)上運行著許多管理系統(tǒng),但這些系統(tǒng)或多或少都存在著技術(shù)過于陳舊、頁面不夠美觀,以及沒有針對移動設(shè)備的瀏覽做出優(yōu)化等問題。同時隨著智能手機在校園中的普及,越來越多的學生在嘗試通過手機終端訪問教務(wù)等信息時都會出現(xiàn)頁面排版錯亂、無法成功使用等問題,這一現(xiàn)象造成的體驗較差。本文以教務(wù)系統(tǒng)為切入點,針對基于移動平臺的教務(wù)系統(tǒng),介紹了“移動客戶端”的設(shè)計過程及優(yōu)化技術(shù)。
1總體設(shè)計
1.1結(jié)構(gòu)設(shè)計
本系統(tǒng)總體功能結(jié)構(gòu)從上到下分為5層:接入層、展現(xiàn)層、應(yīng)用層、支撐層、基礎(chǔ)層。其中接入層代表全體用戶,負責操作App;展現(xiàn)層代表App本身,負責與用戶產(chǎn)生交互;應(yīng)用層代表App內(nèi)部模塊,主要分為教務(wù)模塊、圖書管理模塊、圈子模塊,這些模塊組成了App的全部功能;支撐層代表App底層結(jié)構(gòu)中的一部分,包括數(shù)據(jù)庫、解析器等中間件,這些部件支撐著整個業(yè)務(wù)系統(tǒng)的運行;基礎(chǔ)層代表“服務(wù)器”部分。五層結(jié)構(gòu)建立了用戶一客戶端一服務(wù)器三者之間的完整關(guān)系如圖l所示。
1.2功能設(shè)計
移動教務(wù)平臺Android端以校園現(xiàn)有相關(guān)系統(tǒng)為功基礎(chǔ),對原有系統(tǒng)進行“移動平臺化”移植,使用戶可以在手機上直接通過“獨立客戶端”相應(yīng)系統(tǒng)進行操作。該平臺Android端以“教務(wù)系統(tǒng)”為主,同時也結(jié)合了“圖書管理系統(tǒng)”和“通知系統(tǒng)”,其中“教務(wù)系統(tǒng)”實際上也整合了“評教系統(tǒng)”,各系統(tǒng)之間相互獨立,符合“低耦合”的設(shè)計理念,共同構(gòu)成Android端完整的軟件功能。具體提供的功能包括成績查詢、圖書查詢、圖書推薦、個人圖書館、通知推送及移動評教。
1.3UI設(shè)計
本系統(tǒng)所采用的主體設(shè)計風格為“卡片式UI設(shè)計”??ㄆ経I本設(shè)計中全部UI界面基于“卡片式”設(shè)計?!翱ㄆ健盪I相較于傳統(tǒng)的UI設(shè)計,在柵格的基礎(chǔ)上更進一步,可以將不同大小、不同媒介形式的內(nèi)容單元以統(tǒng)一的方式進行混合呈現(xiàn),并且卡片式設(shè)計應(yīng)用于流量分發(fā)的渠道型頁面及碎片化內(nèi)容頁。
2實現(xiàn)優(yōu)化
2.1性能優(yōu)化
1)由于整個Android生態(tài)“碎片化”現(xiàn)象較為嚴重,不同的手機搭載的不同版本Android系統(tǒng),不同的屏幕大小帶來的不同分辨率以及手機之間不同的硬件配置,眾多因素都會導(dǎo)致App性能在不同的環(huán)境下表現(xiàn)不一致。性能優(yōu)化部分主要指在對Bitmap的處理和對ListView處理的優(yōu)化上。在Android開發(fā)中,處理Bitmap需要小心,否則輕者會造成應(yīng)用卡頓,嚴重地會直接OOM(Out of Memory)或?qū)е翧NR(Android Not Respond-ing)。
2)在文所述應(yīng)用在首次啟動展示的引導(dǎo)界面,在ViewPag-er的Fragment中加載圖片時,采用了異步線程+壓縮顯示的方法,使得Bitmap的顯示效率有了很大程度的改善。具體代碼如下:
2.2 ListView滑動性能優(yōu)化
對于ListView的優(yōu)化,因為ListView依靠一種類似“?!钡臄?shù)據(jù)結(jié)構(gòu)來渲染每個要顯示的條目,當用戶將列表向上滑動,不再可見的條目會被壓至棧底,釋放空間,供新條目使用,實現(xiàn)過程如圖2所示。但當用戶將這個視圖滑回屏幕,在這種情況下程序應(yīng)當作出處理,讓ListView直接從內(nèi)存中讀取View而不是重新申請空間。這可以使用一個數(shù)據(jù)結(jié)構(gòu)將get的View先緩存起來,這樣的數(shù)據(jù)結(jié)構(gòu)就是“ViewHolder”,類似的還有ViewS-tub等一些元素。
2.3UI優(yōu)化
1)UI優(yōu)化是指對軟件UI布局做出優(yōu)化以獲得更佳的性能。在系統(tǒng)UI開發(fā)過程中,有很多布局、控件等元素可以實現(xiàn)復(fù)用。這些元素如果不在優(yōu)化階段單獨從代碼中抽出,不但會造成項目中產(chǎn)生大量冗余代碼,而且會拖慢應(yīng)用的UI渲染性能。
2)通過使用Hierarchy Viewer對現(xiàn)有實現(xiàn)布局進行查看,去除多重嵌套的布局,并抽出能夠?qū)崿F(xiàn)重用的布局,合理利用
這個布局在初次實現(xiàn)時并無任何問題的,但在設(shè)計優(yōu)化階段經(jīng)過Hierarchy Viewer查看,發(fā)現(xiàn)其中的層級套用過于復(fù)雜,在RAM較小的手機上會嚴重影響App性能。
3)優(yōu)化過程采用了
類似這樣的優(yōu)化在本次畢業(yè)設(shè)計中的很多頁面中均有體現(xiàn)。通過這些優(yōu)化途徑,使得軟件在啟動性能、運行效率上有了很大程度的提升,也降低了對手機資源的消耗,增加了手機的續(xù)航時間。
3結(jié)論
本文介紹了基于Android的移動教務(wù)系統(tǒng)設(shè)計過程,同時介紹了對該系統(tǒng)在性能、ListView滑動性及UI等方面進行了優(yōu)化,通過這些優(yōu)化手段的運用,使得系統(tǒng)在啟動性能、運行效率上有了很大程度的提升,降低了對手機資源的消耗,增加了手機的續(xù)航時間。