基于Android平台的开发架构设计
----以家校通移动端为例

2016-08-07 11:54吴佳兴周传生
关键词:线程视图架构

吴佳兴, 周传生

(沈阳师范大学 科信软件学院, 沈阳 110034)



基于Android平台的开发架构设计
----以家校通移动端为例

吴佳兴, 周传生

(沈阳师范大学 科信软件学院, 沈阳 110034)

近年来随着网络通讯的快速发展及智能移动设备的普及,人们对智能手机的需求大幅度提升。伴随着4G网络的普及,智能手机的功能越来越强大,同时智能手机的持有者也对手机的要求越来越高,间接对移动软件开发者所设计软件的质量和稳定性提出了更高的要求。早期基于Android智能移动设备的移动应用,存在着许多瑕疵,如开发效率低下、适配性差、健壮性缺乏、在网络较差的情况下,通信效率低下等弊端。针对现有问题,以基于Android移动端的“家校通”系统开发为例,阐述了基于Android平台移动端开发框架的模块设计,及相关设计思想,在此基础上提出了更明确的分层设计模式,通过对开发架构更合理的设计,较好的解决了上述问题。

移动设备; Android; 家校通; 开发架构

0 引 言

随着信息技术的高速发展和广泛应用[1]及移动手机应用率的提升和更加智能化,移动应用市场上也相继涌现了一大批的优秀的移动应用[2],应用种类涵盖了我们日常生活的各个方面,移动应用带给人们的便利毋庸置疑,且已经完成了从方便生活到引导生活的华丽转型[3],尤其在我国学校教育信息化建设全面展开的大背景下,信息技术在校园中更是得到了普遍的应用。基于移动设备的教育信息系统也随着智能移动设备份额的增加而逐步彰显出它自身的重要性。在智能手机硬件设备与时俱进的同时,应用软件开发者也在寻求更好的优质架构来提升移动应用的开发效率。针对该问题,本文提出了基于Android平台的移动端开发架构,设计自身采用了良好的分层开发架构[4],将表现层与业务模型分离,从而使系统具有更好的灵活性和可维护性[5],同时对Android SDK提出进一步的改进。

1 家校通移动端功能需求

1.1 家校通系统功能分析

鉴于移动端对及时性有较高要求,家校通移动端引入了即时通信功能,使其可以进行教师与家长之间一对一的对话及同班同学之间的互动、群聊、随时随地发布广播通知;并以课外交流为主、教学辅助为辅的准则设计了包括:联系人管理,作业管理,班级圈分享等功能。

1.2 家校通系统模块设计

根据系统功能分析,系统初步设计了包括移动IM、通讯录、班级圈、作业管理、个人设置等功能,各功能又包含多个具体子功能。系统各个模块从视图、后台逻辑模型等方面进行了相应的功能优化,使其在UI流畅度、屏幕适配、后台任务调度机制、异常处理机制等相关方面较传统系统都有更优秀的表现。

2 移动端架构的分层设计

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传来的请求首先会被消息分发模块接收并进行任务缓存,根据不同请求分类调用相应业务方法,业务方法的执行是有序且异步的,获取请求结果后,将需要处理的结果交给请求解析线程,使用数据解析模块的好处在于提升应用流畅性,并屏蔽相关异常。

3 家校通构架的设计实现

此章节将用一次典型的客户请求作为主线介绍基于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对象锁,采用粒度更小的读写锁。使得缓存在读取速度方面较原来的对象锁机制有了进一步的提升。

4 结 语

本文以“家校通”移动端为例提出并设计了一种基于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

猜你喜欢
线程视图架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
基于国产化环境的线程池模型研究与实现
5.3 视图与投影
视图
WebGIS架构下的地理信息系统构建研究
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
浅谈linux多线程协作
一种基于FPGA+ARM架构的μPMU实现