国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android平臺的開發(fā)架構(gòu)設(shè)計(jì)
----以家校通移動端為例

2016-08-07 11:54:04吳佳興周傳生
關(guān)鍵詞:線程視圖架構(gòu)

吳佳興, 周傳生

(沈陽師范大學(xué) 科信軟件學(xué)院, 沈陽 110034)

?

基于Android平臺的開發(fā)架構(gòu)設(shè)計(jì)
----以家校通移動端為例

吳佳興, 周傳生

(沈陽師范大學(xué) 科信軟件學(xué)院, 沈陽 110034)

近年來隨著網(wǎng)絡(luò)通訊的快速發(fā)展及智能移動設(shè)備的普及,人們對智能手機(jī)的需求大幅度提升。伴隨著4G網(wǎng)絡(luò)的普及,智能手機(jī)的功能越來越強(qiáng)大,同時(shí)智能手機(jī)的持有者也對手機(jī)的要求越來越高,間接對移動軟件開發(fā)者所設(shè)計(jì)軟件的質(zhì)量和穩(wěn)定性提出了更高的要求。早期基于Android智能移動設(shè)備的移動應(yīng)用,存在著許多瑕疵,如開發(fā)效率低下、適配性差、健壯性缺乏、在網(wǎng)絡(luò)較差的情況下,通信效率低下等弊端。針對現(xiàn)有問題,以基于Android移動端的“家校通”系統(tǒng)開發(fā)為例,闡述了基于Android平臺移動端開發(fā)框架的模塊設(shè)計(jì),及相關(guān)設(shè)計(jì)思想,在此基礎(chǔ)上提出了更明確的分層設(shè)計(jì)模式,通過對開發(fā)架構(gòu)更合理的設(shè)計(jì),較好的解決了上述問題。

移動設(shè)備; Android; 家校通; 開發(fā)架構(gòu)

0 引 言

隨著信息技術(shù)的高速發(fā)展和廣泛應(yīng)用[1]及移動手機(jī)應(yīng)用率的提升和更加智能化,移動應(yīng)用市場上也相繼涌現(xiàn)了一大批的優(yōu)秀的移動應(yīng)用[2],應(yīng)用種類涵蓋了我們?nèi)粘I畹母鱾€(gè)方面,移動應(yīng)用帶給人們的便利毋庸置疑,且已經(jīng)完成了從方便生活到引導(dǎo)生活的華麗轉(zhuǎn)型[3],尤其在我國學(xué)校教育信息化建設(shè)全面展開的大背景下,信息技術(shù)在校園中更是得到了普遍的應(yīng)用?;谝苿釉O(shè)備的教育信息系統(tǒng)也隨著智能移動設(shè)備份額的增加而逐步彰顯出它自身的重要性。在智能手機(jī)硬件設(shè)備與時(shí)俱進(jìn)的同時(shí),應(yīng)用軟件開發(fā)者也在尋求更好的優(yōu)質(zhì)架構(gòu)來提升移動應(yīng)用的開發(fā)效率。針對該問題,本文提出了基于Android平臺的移動端開發(fā)架構(gòu),設(shè)計(jì)自身采用了良好的分層開發(fā)架構(gòu)[4],將表現(xiàn)層與業(yè)務(wù)模型分離,從而使系統(tǒng)具有更好的靈活性和可維護(hù)性[5],同時(shí)對Android SDK提出進(jìn)一步的改進(jìn)。

1 家校通移動端功能需求

1.1 家校通系統(tǒng)功能分析

鑒于移動端對及時(shí)性有較高要求,家校通移動端引入了即時(shí)通信功能,使其可以進(jìn)行教師與家長之間一對一的對話及同班同學(xué)之間的互動、群聊、隨時(shí)隨地發(fā)布廣播通知;并以課外交流為主、教學(xué)輔助為輔的準(zhǔn)則設(shè)計(jì)了包括:聯(lián)系人管理,作業(yè)管理,班級圈分享等功能。

1.2 家校通系統(tǒng)模塊設(shè)計(jì)

根據(jù)系統(tǒng)功能分析,系統(tǒng)初步設(shè)計(jì)了包括移動IM、通訊錄、班級圈、作業(yè)管理、個(gè)人設(shè)置等功能,各功能又包含多個(gè)具體子功能。系統(tǒng)各個(gè)模塊從視圖、后臺邏輯模型等方面進(jìn)行了相應(yīng)的功能優(yōu)化,使其在UI流暢度、屏幕適配、后臺任務(wù)調(diào)度機(jī)制、異常處理機(jī)制等相關(guān)方面較傳統(tǒng)系統(tǒng)都有更優(yōu)秀的表現(xiàn)。

2 移動端架構(gòu)的分層設(shè)計(jì)

2.1 MVC分層開發(fā)模式介紹

圖1 MVC模式Fig.1 MVC pattern

MVC模式[6]如圖1所示,將系統(tǒng)劃分為模型、視圖和控制器3部分。模型(Model):模型包含完成業(yè)務(wù)所需要的所有的數(shù)據(jù)、行為和業(yè)務(wù)規(guī)則;視圖(View):視圖是一個(gè)程序的可視化元素集合;控制器(Controller):分發(fā)系統(tǒng)的各種事件和業(yè)務(wù)請求,是視圖與模型間的紐帶。

2.2 視圖層(View)應(yīng)用

視圖(View)是用戶看到并與之交互的界面,它負(fù)責(zé)將應(yīng)用顯現(xiàn)給用戶和顯示模型的狀態(tài)。家校通系統(tǒng)采用分層設(shè)計(jì)原則,主要依賴Android SDK開發(fā),前臺視圖層采用原生XML布局,本文對前臺視圖層進(jìn)行了一部分兼容性優(yōu)化,列表流暢度優(yōu)化(包括加載時(shí)機(jī)、并發(fā)加載量、圖片回收機(jī)制等),圖片存儲優(yōu)化(緩存技術(shù))。

2.3 控制器(Controller)應(yīng)用

在Activity中采用Intent Filter作為視圖分離器,將所有頁面跳轉(zhuǎn)信息以XML的配置形式體現(xiàn)在androidManifest.xml配置文件中,這種獨(dú)立配置的跳轉(zhuǎn)行為將將視圖和跳轉(zhuǎn)請求進(jìn)行了分離。減小了視圖跳轉(zhuǎn)時(shí)產(chǎn)生的代碼耦合。本設(shè)計(jì)將采用模塊化設(shè)計(jì),力爭實(shí)現(xiàn)一個(gè)邏輯層次清晰,職責(zé)明確的可配置設(shè)計(jì)框架。

2.4 多線程模型(Model)設(shè)計(jì)

圖2 業(yè)務(wù)邏輯層Fig.2 Business logic layer

業(yè)務(wù)層是與問題相關(guān)數(shù)據(jù)的邏輯抽象,代表對象的內(nèi)在屬性,是整個(gè)模型的核心,業(yè)務(wù)代碼是真正完成任務(wù)的代碼,接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。android平臺的框架設(shè)計(jì)中,不同于普通Web應(yīng)用的是,在android應(yīng)用中,UI線程(主線程)超過5秒沒響應(yīng)的話就會拋出無響應(yīng)異常(ANR)[7]。Android對諸如此類問題,提出了多線程設(shè)計(jì)模型[8],引入了AsyncTask、Handler等多線程任務(wù)類[9]和多線程消息模型,本文所提出的開發(fā)框架將對這2種Android原生模型[10]進(jìn)行相應(yīng)改造和優(yōu)化,使其更符合項(xiàng)目需求及用戶操作習(xí)慣。

業(yè)務(wù)層的設(shè)計(jì)主要由3個(gè)模塊組成,如圖2所示。模塊設(shè)計(jì)依照開閉原則,模塊與模塊之間具有良好的獨(dú)立性,可以根據(jù)開發(fā)需求替換相應(yīng)模塊[11]。模塊分別為Dispatcher消息分發(fā)模塊、Service業(yè)務(wù)處理模塊以及Parser數(shù)據(jù)解析模塊,通過UI傳來的請求首先會被消息分發(fā)模塊接收并進(jìn)行任務(wù)緩存,根據(jù)不同請求分類調(diào)用相應(yīng)業(yè)務(wù)方法,業(yè)務(wù)方法的執(zhí)行是有序且異步的,獲取請求結(jié)果后,將需要處理的結(jié)果交給請求解析線程,使用數(shù)據(jù)解析模塊的好處在于提升應(yīng)用流暢性,并屏蔽相關(guān)異常。

3 家校通構(gòu)架的設(shè)計(jì)實(shí)現(xiàn)

此章節(jié)將用一次典型的客戶請求作為主線介紹基于Android移動端的處理請求的各個(gè)環(huán)節(jié)[12]如何運(yùn)作,圖3表明了請求流向及各個(gè)組件[13]間的處理順序。

圖3 請求流向Fig.3 Request dispatch

一次請求過程多數(shù)是由用戶發(fā)起,通常是觸發(fā)頁面上的相關(guān)控件[14],請求通過Controller交由分發(fā)線程,分發(fā)線程通過內(nèi)置的Handler(內(nèi)置隊(duì)列)對象確定任務(wù)的先后提交順序,并將請求分發(fā)給相應(yīng)的Service業(yè)務(wù)方法響應(yīng)請求(網(wǎng)絡(luò)請求,本地?cái)?shù)據(jù)查詢等)。這樣一次完整的請求就在多個(gè)獨(dú)立模塊的配合下完成了。具體細(xì)節(jié)將在下幾小節(jié)將以獲取好友列表為例給與介紹。

3.1 使用意圖過濾器(Intent Filter)解耦獲取好友頁面請求

獲取好友請求是由用戶通過切換好友選項(xiàng)卡發(fā)起的,在經(jīng)過后臺Service獲取到相應(yīng)數(shù)據(jù)后將獲取的結(jié)果返回至相應(yīng)界面,用于響應(yīng)用戶請求[15]。本系統(tǒng)采用Intent Filter隱式跳轉(zhuǎn),達(dá)到視圖跳轉(zhuǎn)請求之間的解耦的目的,一個(gè)獲取好友展示頁面的跳轉(zhuǎn)行為具體以URI形式指定跳轉(zhuǎn)地址,通過指定URI的scheme、host、pathPrefix等屬性動態(tài)配置跳轉(zhuǎn)目的地址。以此達(dá)到視圖代碼解耦的目的。

3.2 使用任務(wù)分發(fā)線程(Dispatcher Thread)分發(fā)獲取好友請求

Dispatcher內(nèi)存在一個(gè)異步的Handler,所有的請求都會通過這個(gè)Handler轉(zhuǎn)發(fā),因?yàn)檗D(zhuǎn)發(fā)請求是通過子線程的方式進(jìn)行的,所以轉(zhuǎn)發(fā)操作不會影響到UI線程的流暢性,于此同時(shí)Handler內(nèi)置的消息隊(duì)列保持了請求消息的順序,這對某些需求執(zhí)行順序的請求至關(guān)重要,在Dispatcher類外部調(diào)用的是dispatch方法,然后通過handler將請求轉(zhuǎn)換到對應(yīng)的perform方法。完成請求的轉(zhuǎn)換。

3.3 Json解析線程 (JsonParser Thread)解析好友數(shù)據(jù)

JsonParser將開啟新的線程來進(jìn)行AsyncTask返回的結(jié)果解析,由于家校通采用JSON格式通訊,所以系統(tǒng)提供內(nèi)置的JsonParser用以解析JSON格式,JSON解析采用jackson開源框架,將所接收到的JSON信息轉(zhuǎn)換為EntityBean以方便上層解析。

3.4 對于Android SDK其它優(yōu)化

Android原生SDK對應(yīng)用的支持并不是十分完美,在列表更新、緩存同步鎖、線程池等地方都存在著許多瑕疵,例如Android ListView Adapter的notifyDataSetChanged()方法,在大數(shù)據(jù)量刷新數(shù)據(jù)時(shí)通常會刷新所有列表,本設(shè)計(jì)亦給予優(yōu)化,對列表的刷新使用局部刷新方法,減少了列表刷新的范圍,增強(qiáng)了UI的流暢性。

緩存結(jié)構(gòu)使用lrucache結(jié)構(gòu),本設(shè)計(jì)對其進(jìn)行了讀寫鎖優(yōu)化,摒棄原始synchronized對象鎖,采用粒度更小的讀寫鎖。使得緩存在讀取速度方面較原來的對象鎖機(jī)制有了進(jìn)一步的提升。

4 結(jié) 語

本文以“家校通”移動端為例提出并設(shè)計(jì)了一種基于Android平臺的便捷開發(fā)架構(gòu),視圖層采用Android原生XML進(jìn)行布局,使用Android SDK 內(nèi)置的Intent Filter機(jī)制作為視圖分離器,業(yè)務(wù)邏輯層采用多線程模型,模塊彼此獨(dú)立,各司其職,請求分發(fā)模塊負(fù)責(zé)請求的調(diào)度、Service業(yè)務(wù)模塊則處理相應(yīng)的邏輯請求、最后由數(shù)據(jù)解析模塊負(fù)責(zé)返回?cái)?shù)據(jù)的解析。本文所設(shè)計(jì)的華創(chuàng)家校通移動端(已在各大應(yīng)用市場上線),就是在此架構(gòu)下進(jìn)行了核心功能設(shè)計(jì)。

使用此架構(gòu)會對應(yīng)用開發(fā)提供了許多便利,提升了應(yīng)用的健壯性,具體如下:1)分發(fā)線程的內(nèi)置隊(duì)列機(jī)制,保證了請求的順序,這對依賴請求順序的相關(guān)功能帶來了方便;2)開發(fā)架構(gòu)優(yōu)化了一部分原生Android SDK的類代碼,涉及到網(wǎng)絡(luò)、任務(wù)隊(duì)列、線程池、讀寫鎖、異常處理等方面;3)數(shù)據(jù)解析線程屏蔽了一些常規(guī)異常;4)業(yè)務(wù)層采用多線程模型大大減少了UI線程的壓力,增加了其流暢性。

[ 1 ]范潔. 基于Android的移動“家校通”系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國信息技術(shù)教育, 2014(19):124-126.

[ 2 ]吳旭. 基于移動通信平臺的家校通系統(tǒng)研究與實(shí)現(xiàn)[D]. 武漢:華中科技大學(xué), 2007.

[ 3 ]張志勛. 移動終端支持下的家校合作平臺的設(shè)計(jì)與實(shí)現(xiàn)[D]. 上海:華東師范大學(xué), 2015.

[ 4 ]劉亮,霍劍青,郭玉剛,等. 基于MVC的通用型模式的設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國科學(xué)技術(shù)大學(xué)學(xué)報(bào), 2010,40(6):635-639.

[ 5 ]田娟,徐釗. 基于J2EE的MVC設(shè)計(jì)模式的分析與思考[J]. 計(jì)算機(jī)與現(xiàn)代化, 2010(10):54-58.

[ 6 ]薛峰,梁鋒,徐書勛,等. 基于Spring MVC框架的Web研究與應(yīng)用[J]. 合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版), 2012,35(3):337-340.

[ 7 ]楊杰. 基于Android的多線程處理技術(shù)[J]. 電腦知識與技術(shù), 2013,18(9):4251-4254.

[ 8 ]傅偉. 基于Android的校園通系統(tǒng)設(shè)計(jì)[J]. 廊坊師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2015,15(6):24-29.

[ 9 ]陳星,楊春花. Android異步技術(shù)的對比實(shí)驗(yàn)及應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2016(2):188-191.

[10]章蓬陽,邵帥. Android異步框架的研究與設(shè)計(jì)[J]. 軟件, 2016(2):150-154.

[11]張俊暉. Android即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 自動化與儀器儀表, 2016,37(2):64-66.

[12]公磊,周聰. 基于Android的移動終端應(yīng)用程序開發(fā)與研究[J]. 計(jì)算機(jī)與現(xiàn)代化, 2008(8):85-89.

[13]姚昱旻,劉衛(wèi)國. Android的架構(gòu)與應(yīng)用開發(fā)研究[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2008(11):110-112.

[14]趙亮,張維. 基于Android技術(shù)的界面設(shè)計(jì)與研究[J]. 電腦知識與技術(shù), 2009,5(29):8183-8185.

[15]曾健平,邵艷潔. Android系統(tǒng)架構(gòu)及應(yīng)用程序開發(fā)研究[J]. 微計(jì)算機(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。

遼寧省教育廳普通高等學(xué)校本科教學(xué)改革研究項(xiàng)目(遼教發(fā)[2016]23號)。

吳佳興(1990-),男,遼寧鐵嶺人,沈陽師范大學(xué)碩士研究生; 通信作者: 周傳生(1966-),男,安徽霍邱人,沈陽師范大學(xué)教授,碩士。

1673-5862(2016)03-0359-04

TP311.5

A

10.3969/ j.issn.1673-5862.2016.03.021

猜你喜歡
線程視圖架構(gòu)
基于FPGA的RNN硬件加速架構(gòu)
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
汽車工程(2021年12期)2021-03-08 02:34:30
5.3 視圖與投影
視圖
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
淺談linux多線程協(xié)作
一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
Linux線程實(shí)現(xiàn)技術(shù)研究
德庆县| 仙居县| 千阳县| 辽阳县| 五大连池市| 余江县| 五常市| 牟定县| 庆元县| 浮山县| 岑巩县| 五台县| 临清市| 晴隆县| 镇巴县| 巴彦淖尔市| 巴东县| 虎林市| 绍兴县| 平舆县| 安陆市| 阳东县| 名山县| 洛宁县| 瑞昌市| 友谊县| 前郭尔| 营山县| 齐河县| 克东县| 石嘴山市| 云梦县| 容城县| 七台河市| 丘北县| 白城市| 当阳市| 旺苍县| 连州市| 海口市| 合山市|