吳佳興, 周傳生
(沈陽師范大學 科信軟件學院, 沈陽 110034)
?
基于Android平臺的開發架構設計
----以家校通移動端為例
吳佳興, 周傳生
(沈陽師范大學 科信軟件學院, 沈陽 110034)
近年來隨著網絡通訊的快速發展及智能移動設備的普及,人們對智能手機的需求大幅度提升。伴隨著4G網絡的普及,智能手機的功能越來越強大,同時智能手機的持有者也對手機的要求越來越高,間接對移動軟件開發者所設計軟件的質量和穩定性提出了更高的要求。早期基于Android智能移動設備的移動應用,存在著許多瑕疵,如開發效率低下、適配性差、健壯性缺乏、在網絡較差的情況下,通信效率低下等弊端。針對現有問題,以基于Android移動端的“家校通”系統開發為例,闡述了基于Android平臺移動端開發框架的模塊設計,及相關設計思想,在此基礎上提出了更明確的分層設計模式,通過對開發架構更合理的設計,較好的解決了上述問題。
移動設備; Android; 家校通; 開發架構
隨著信息技術的高速發展和廣泛應用[1]及移動手機應用率的提升和更加智能化,移動應用市場上也相繼涌現了一大批的優秀的移動應用[2],應用種類涵蓋了我們日常生活的各個方面,移動應用帶給人們的便利毋庸置疑,且已經完成了從方便生活到引導生活的華麗轉型[3],尤其在我國學校教育信息化建設全面展開的大背景下,信息技術在校園中更是得到了普遍的應用。基于移動設備的教育信息系統也隨著智能移動設備份額的增加而逐步彰顯出它自身的重要性。在智能手機硬件設備與時俱進的同時,應用軟件開發者也在尋求更好的優質架構來提升移動應用的開發效率。針對該問題,本文提出了基于Android平臺的移動端開發架構,設計自身采用了良好的分層開發架構[4],將表現層與業務模型分離,從而使系統具有更好的靈活性和可維護性[5],同時對Android SDK提出進一步的改進。
1.1 家校通系統功能分析
鑒于移動端對及時性有較高要求,家校通移動端引入了即時通信功能,使其可以進行教師與家長之間一對一的對話及同班同學之間的互動、群聊、隨時隨地發布廣播通知;并以課外交流為主、教學輔助為輔的準則設計了包括:聯系人管理,作業管理,班級圈分享等功能。
1.2 家校通系統模塊設計
根據系統功能分析,系統初步設計了包括移動IM、通訊錄、班級圈、作業管理、個人設置等功能,各功能又包含多個具體子功能。系統各個模塊從視圖、后臺邏輯模型等方面進行了相應的功能優化,使其在UI流暢度、屏幕適配、后臺任務調度機制、異常處理機制等相關方面較傳統系統都有更優秀的表現。
2.1 MVC分層開發模式介紹

圖1 MVC模式Fig.1 MVC pattern
MVC模式[6]如圖1所示,將系統劃分為模型、視圖和控制器3部分。模型(Model):模型包含完成業務所需要的所有的數據、行為和業務規則;視圖(View):視圖是一個程序的可視化元素集合;控制器(Controller):分發系統的各種事件和業務請求,是視圖與模型間的紐帶。
2.2 視圖層(View)應用
視圖(View)是用戶看到并與之交互的界面,它負責將應用顯現給用戶和顯示模型的狀態。家校通系統采用分層設計原則,主要依賴Android SDK開發,前臺視圖層采用原生XML布局,本文對前臺視圖層進行了一部分兼容性優化,列表流暢度優化(包括加載時機、并發加載量、圖片回收機制等),圖片存儲優化(緩存技術)。
2.3 控制器(Controller)應用
在Activity中采用Intent Filter作為視圖分離器,將所有頁面跳轉信息以XML的配置形式體現在androidManifest.xml配置文件中,這種獨立配置的跳轉行為將將視圖和跳轉請求進行了分離。減小了視圖跳轉時產生的代碼耦合。本設計將采用模塊化設計,力爭實現一個邏輯層次清晰,職責明確的可配置設計框架。
2.4 多線程模型(Model)設計

圖2 業務邏輯層Fig.2 Business logic layer
業務層是與問題相關數據的邏輯抽象,代表對象的內在屬性,是整個模型的核心,業務代碼是真正完成任務的代碼,接受視圖請求的數據,并返回最終的處理結果。android平臺的框架設計中,不同于普通Web應用的是,在android應用中,UI線程(主線程)超過5秒沒響應的話就會拋出無響應異常(ANR)[7]。Android對諸如此類問題,提出了多線程設計模型[8],引入了AsyncTask、Handler等多線程任務類[9]和多線程消息模型,本文所提出的開發框架將對這2種Android原生模型[10]進行相應改造和優化,使其更符合項目需求及用戶操作習慣。
業務層的設計主要由3個模塊組成,如圖2所示。模塊設計依照開閉原則,模塊與模塊之間具有良好的獨立性,可以根據開發需求替換相應模塊[11]。模塊分別為Dispatcher消息分發模塊、Service業務處理模塊以及Parser數據解析模塊,通過UI傳來的請求首先會被消息分發模塊接收并進行任務緩存,根據不同請求分類調用相應業務方法,業務方法的執行是有序且異步的,獲取請求結果后,將需要處理的結果交給請求解析線程,使用數據解析模塊的好處在于提升應用流暢性,并屏蔽相關異常。
此章節將用一次典型的客戶請求作為主線介紹基于Android移動端的處理請求的各個環節[12]如何運作,圖3表明了請求流向及各個組件[13]間的處理順序。

圖3 請求流向Fig.3 Request dispatch
一次請求過程多數是由用戶發起,通常是觸發頁面上的相關控件[14],請求通過Controller交由分發線程,分發線程通過內置的Handler(內置隊列)對象確定任務的先后提交順序,并將請求分發給相應的Service業務方法響應請求(網絡請求,本地數據查詢等)。這樣一次完整的請求就在多個獨立模塊的配合下完成了。具體細節將在下幾小節將以獲取好友列表為例給與介紹。
3.1 使用意圖過濾器(Intent Filter)解耦獲取好友頁面請求
獲取好友請求是由用戶通過切換好友選項卡發起的,在經過后臺Service獲取到相應數據后將獲取的結果返回至相應界面,用于響應用戶請求[15]。本系統采用Intent Filter隱式跳轉,達到視圖跳轉請求之間的解耦的目的,一個獲取好友展示頁面的跳轉行為具體以URI形式指定跳轉地址,通過指定URI的scheme、host、pathPrefix等屬性動態配置跳轉目的地址。以此達到視圖代碼解耦的目的。
3.2 使用任務分發線程(Dispatcher Thread)分發獲取好友請求
Dispatcher內存在一個異步的Handler,所有的請求都會通過這個Handler轉發,因為轉發請求是通過子線程的方式進行的,所以轉發操作不會影響到UI線程的流暢性,于此同時Handler內置的消息隊列保持了請求消息的順序,這對某些需求執行順序的請求至關重要,在Dispatcher類外部調用的是dispatch方法,然后通過handler將請求轉換到對應的perform方法。完成請求的轉換。
3.3 Json解析線程 (JsonParser Thread)解析好友數據
JsonParser將開啟新的線程來進行AsyncTask返回的結果解析,由于家校通采用JSON格式通訊,所以系統提供內置的JsonParser用以解析JSON格式,JSON解析采用jackson開源框架,將所接收到的JSON信息轉換為EntityBean以方便上層解析。
3.4 對于Android SDK其它優化
Android原生SDK對應用的支持并不是十分完美,在列表更新、緩存同步鎖、線程池等地方都存在著許多瑕疵,例如Android ListView Adapter的notifyDataSetChanged()方法,在大數據量刷新數據時通常會刷新所有列表,本設計亦給予優化,對列表的刷新使用局部刷新方法,減少了列表刷新的范圍,增強了UI的流暢性。
緩存結構使用lrucache結構,本設計對其進行了讀寫鎖優化,摒棄原始synchronized對象鎖,采用粒度更小的讀寫鎖。使得緩存在讀取速度方面較原來的對象鎖機制有了進一步的提升。
本文以“家校通”移動端為例提出并設計了一種基于Android平臺的便捷開發架構,視圖層采用Android原生XML進行布局,使用Android SDK 內置的Intent Filter機制作為視圖分離器,業務邏輯層采用多線程模型,模塊彼此獨立,各司其職,請求分發模塊負責請求的調度、Service業務模塊則處理相應的邏輯請求、最后由數據解析模塊負責返回數據的解析。本文所設計的華創家校通移動端(已在各大應用市場上線),就是在此架構下進行了核心功能設計。
使用此架構會對應用開發提供了許多便利,提升了應用的健壯性,具體如下:1)分發線程的內置隊列機制,保證了請求的順序,這對依賴請求順序的相關功能帶來了方便;2)開發架構優化了一部分原生Android SDK的類代碼,涉及到網絡、任務隊列、線程池、讀寫鎖、異常處理等方面;3)數據解析線程屏蔽了一些常規異常;4)業務層采用多線程模型大大減少了UI線程的壓力,增加了其流暢性。
[ 1 ]范潔. 基于Android的移動“家校通”系統設計與實現[J]. 中國信息技術教育, 2014(19):124-126.
[ 2 ]吳旭. 基于移動通信平臺的家校通系統研究與實現[D]. 武漢:華中科技大學, 2007.
[ 3 ]張志勛. 移動終端支持下的家校合作平臺的設計與實現[D]. 上海:華東師范大學, 2015.
[ 4 ]劉亮,霍劍青,郭玉剛,等. 基于MVC的通用型模式的設計與實現[J]. 中國科學技術大學學報, 2010,40(6):635-639.
[ 5 ]田娟,徐釗. 基于J2EE的MVC設計模式的分析與思考[J]. 計算機與現代化, 2010(10):54-58.
[ 6 ]薛峰,梁鋒,徐書勛,等. 基于Spring MVC框架的Web研究與應用[J]. 合肥工業大學學報(自然科學版), 2012,35(3):337-340.
[ 7 ]楊杰. 基于Android的多線程處理技術[J]. 電腦知識與技術, 2013,18(9):4251-4254.
[ 8 ]傅偉. 基于Android的校園通系統設計[J]. 廊坊師范學院學報(自然科學版), 2015,15(6):24-29.
[ 9 ]陳星,楊春花. Android異步技術的對比實驗及應用[J]. 計算機應用與軟件, 2016(2):188-191.
[10]章蓬陽,邵帥. Android異步框架的研究與設計[J]. 軟件, 2016(2):150-154.
[11]張俊暉. Android即時通信系統的設計與實現[J]. 自動化與儀器儀表, 2016,37(2):64-66.
[12]公磊,周聰. 基于Android的移動終端應用程序開發與研究[J]. 計算機與現代化, 2008(8):85-89.
[13]姚昱旻,劉衛國. Android的架構與應用開發研究[J]. 計算機系統應用, 2008(11):110-112.
[14]趙亮,張維. 基于Android技術的界面設計與研究[J]. 電腦知識與技術, 2009,5(29):8183-8185.
[15]曾健平,邵艷潔. Android系統架構及應用程序開發研究[J]. 微計算機信息, 2011(9):1-3.
Architecture design base on Android platform Taking family-school communication for example
WU Jiaxing, ZHOU Chuansheng
(Software College, Shenyang Normal University, Shenyang 110034, China)
In recent years, with the rapid development of internetwork communications and smart mobile devices, the demand for smartphones improved significantly, according to incomplete statistics, only in 2015, the domestic smartphone sales had exceeded 400 million, with the popularity of 4G networks, smartphones become more powerful, and person who using smartphone also increasingly high needs for mobile phones, which also indirectly for mobile software developers to design quality and stability of the software made more high request; early Android applications, there are many defects, such as the development of low efficiency, poor adaptation, lack of robustness in a poor network environment, inefficient communication, and so on. Based on these existing problems, this paper based on the Android mobile taking “family-school” system for example to explain the Android platform for mobile and module design based development framework, and related design ideas, on this basis, we propose a clearer division layer design mode, by appropriately adjusting the rational design and development of related infrastructure, a better solution to the above problem.
mobile device; Android; family-school communication; architecture
2016-04-12。
遼寧省教育廳普通高等學校本科教學改革研究項目(遼教發[2016]23號)。
吳佳興(1990-),男,遼寧鐵嶺人,沈陽師范大學碩士研究生; 通信作者: 周傳生(1966-),男,安徽霍邱人,沈陽師范大學教授,碩士。
1673-5862(2016)03-0359-04
TP311.5
A
10.3969/ j.issn.1673-5862.2016.03.021