e-works数字化企业网  »  文章频道  »  基础信息化  »  移动应用

基于Android系统的移动应用整体架构分析与设计

2017/5/21    来源:公安部第一研究所    作者:于炳虎      
关键字:Android  移动应用  
近两年,随着智能手机的普及和移动互联网的兴起,带动了移动应用市场的快速发展,移动APP逐渐成为互联网用户新入口,重要性越来越突出,用户对APP产品的功能性和非功能性的要求也越来越高。
    1.引言
 
    移动互联网技术的不断创新,带动了移动互联网市场的快速蓬勃发展。凯度中国观察最近发布了20 16年前三季度移动操作系统占有率报告,该报告显示,全球Android手机的市场份额上升至87.5%,用户的海量增长,致使APP应用市场“一片繁荣”,新的App更是层出不穷,今年1月份的数据显示,以Android系统为主的Google Play应用商店,APP数量超过140万,我们的日常生活已然被移动APP淹没了,越来越多的AP P改变了人们以往的生活方式和消费方式。
 
    A PP应用软件数量已经多到不可计数,并且每天还有数以万计的APP软件不断上新到应用市场,但是很多APP产品较为注重眼前利益,只注重前期用户的快速积累和圈钱,而A P P在设计开发之初,没有重视产品的功能架构与后期的更新维护,导致产品在功能、性能和稳定性等方面存在很大的问题和隐患,用户在使用的过程中体验较差,用户粘性较低,用户逐渐流失。为此,本文提出一套基于Android系统的APP开发整体架构方案,旨在提高App产品的整体质量和用户体验,为后续广大移动应用领域的A P P开发者奠定架构基础。
 
    2.UI架构设计模式分析
 
MVC设计模式
 
图1 MVC设计模式
 
 MVP设计模式
 
图2 MVP设计模式
 
MVVM设计模式
 
图3 MVVM设计模式
 
    移动产品的用户体验和交互体验可以说是这个产品的灵魂,U I作为与用户最为直接的交互层,直接影响着用户的使用体验,而这里的U I架构包含的不仅仅只是展示层,还有业务层和数据层,这是一个完整的U I架构体系。Android应用开发的UI架构设计模式历经了MVC、MVP到MVVM的演进,前期的架构设计承载着整个软件的设计思想和关键决策,架构模式是面向开发者的,它在一定程度上存在性能的损耗,但在开发过程中具有更好的代码可阅读性、可测试性和可维护性。
 
    2.1 MVC
 
    MVC全名是Model View Controller,是模型(Model)、视图(View)、控制器(Controller)的缩写,是软件架构中最常见的一种框架,并且是经典的框架模式之一,它在多个开发领域中都有广泛的应用,尤其在Java EE领域。MVC简单来说就是通过Controller的控制去操作Model层的数据,并且返回给View层展示,MVC架构设计见图1所示。
 
    M V C模式的最大优势是将视图的展示与数据处理和业务逻辑相分离,视图层只需关注UI的展示。在Android应用开发中,业务逻辑和数据处理等担任了Model角色,XML布局文件等担任了View角色,Activity和Fragment担任了Controller角色。控制器的角色可以看作一个中间桥梁的作用,通过接口通信来协同 View(视图)和Model(模型)工作,起到了两者之间的通信作用。控制器还起到了一定解耦的作用,将View视图和Model模型分离,但是在Activity中依然有很多关于视图UI的显示代码,可见View视图和Activ-ity控制器并不是完全分离的,也就是说一部分Vie w视图和Controller控制器Activity是绑定在一个类中的。
 
    MVC在Web开发中使用极为广泛,但使用在Android中,问题还是较多的,xml布局文件作为视图层,控制能力较弱,如果动态的去改变界面,只能把代码写在Acti vity中,这就造成了Activity既是Controller层,又是View层的这样一个窘境。MVC还有一个重要的缺陷,图1可以看到,View层和Model层是相互可知的,这意味着两层之间存在耦合,虽然控制器起到了一定的解耦作用,但也只是在一定程度上,耦合对于一个大型程序来说是非常致命的,因为这表示开发,测试,维护都需要花大量的精力。
 
    2.2 MVP
 
    MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。MVP作为MVC的演化,更适用在移动应用的开发中,解决了MVC存在的缺点,对于Android来说,MVP的Model层相对于MVC是一样的,而Activity和Fragment不再是Controller层,而是纯粹的View层,所有关于用户事件的转发全部交由Presenter层处理。
 
    图2是MVP的设计模式图,从图中可以看出,与MVC最明显的差别就是View层和Model层是不连通的,做到了完全的解耦,当Vi e w层某个界面需要展示某些数据的时候,首先会调用Presenter层的接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是M V P模式的整个核心过程。
 
    在整个过程中,Presenter层充当了桥梁的作用,View层和Model层完全没有联系。在层与层的通信交互中,主要是通过接口和回调机制实现的。这样分层的好处就是大大减少了Mo de l与Vi e w层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面M o d e l层可以封装复用,可以极大的减少代码量。不仅如此,还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试。在MVC模式中测试和维护较难解决的问题,在MVP中都解决了。
 
    2.3 MVVM
 
    Android应用中的MVVM是在2015年Google的IO大会上推出的。提到M V V M,大多数开发者都会想D a t a Binding,Data Binding是Google官方推出的一个基于MVVM设计模式实现的框架,MVVM可以实现视图和逻辑代码的超级解耦,按照Google的说法,使用了MVVM的开发模式,还可以提高布局文件的解析速度。从图3中可以看到,MVVM和MVP的结构上区别不大,Presenter层换成了ViewModel层,View层和ViewModel层是相互绑定的关系,这意味着当更新ViewModel层的数据的时候,View层的UI会相应的变动。
 
    在MVVM设计模式中,通过ViewModel和View的映射,完成了View和Model的双向绑定。View的事件直接传递到ViewModel,ViewModel去对Model进行操作并接受更新。进而反馈到View上。相比于MVP去掉了Presenter,但View层略显过重,同时View的复用成为了一个新的问题。
 
    2.4 分析比较
 
    经过上面的分析,可见MVC已不太适用Android等移动应用的开发设计中了,相比来说MVP和MVVM是更适合在移动应用的开发中使用,MVP和MVVM这两个MVC的升级延续孰优孰劣,并没有结论,还是要根据具体的项目、具体产品来分析。
 
APP整体架构
 
图4 APP整体架构
 
应用层架构
 
图5 应用层架构

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐