MVVM模式在Android平台上的探索与实践外文翻译资料

 2022-08-23 02:08

英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料


MVVM模式在Android平台上的探索与实践

关键词: MVVM; RSS;数据绑定;Android

摘要:当项目变得更加复杂和需要更多的努力时,UI设计师和业务工程师如何方便和有效地协作开发Android平台上的应用程序是一个难以解决的问题。本文比较了MVVM与常用的MVC和MVP模式的共性和变异性,利用 Data Binding和Rome.jar技术设计并实现了RSS 订阅应用程序,并在Android平台上探索了MVVM模式的使用。阐述了解决视图和视图模型双向绑定问题的三个关键点。模型和视图的解耦进一步分离了数据、逻辑和视图,满足了同一模型不同视图格式的要求。 因此,减少了重复代码, 更重要的是,对于多个开发人员,代码的耦合水平降低了。 实现了“高内聚、低拔罐”的软件设计目标,实现了高效的协同开发。

导言:

随着规模的增加和软件开发的复杂性,“高内聚、低耦合”的模块化设计原则一直是研 究人员和开发人员探索和实践的目标。MVC、MVP和MVVM是MVX模型的三种代表性模型。 这些模型是应用系统的常见设计模式,它们实现了数据、逻辑和视图的不同程度的分离。 本文分析和比较了上述三种模型的不同工作机制,并通过说明RSS订阅应用程序的关键设计要点,探索了MVVM模型在Android操作系统(OS)下的使用。在商业利益的驱动下,获取信息的环境现在变得更加恶劣。越来越多的国内外网站提供了相应的RSS服务,用户可以通过订阅网站的RSS服务访问“干净”和有针对性的信息。最近,移动互联网产业逐渐渗透到我们生活的每一个角落,这被认为是红海的竞争。由于移动终端是流量入口,数据流特别珍贵。通过避免用户浏览和下载大量无用的信息,RSS订阅应用可以大大减少时间和数据流量。通过在移动终端中使用RSS订阅应用服务,可以获得更方便、更高效的信息。除了传统功能外,Android平台上的一款RSS订阅应用,具有RSS解析,丰富的文本阅读, 云存储等功能,将给用户带来令人兴奋的体验.. 主要创新点如下:

优化RSS订阅应用的功能,突出互联网思维的两个属性,即可用性和个性化定制;

  • 增加云数据存储能力;
  • 探索MVVM模式在Android平台框架设计中的应用,使界面设计工程师与业务工程师的协作更加便捷;

在原型设计中遵循谷歌材料设计的思想,研究设计材料风格的实现方法;

采用网络请求框架(Volley),支持队列请求和优先级请求进程,并提供缓存机制;

  • 使用轻量级事件总线(Tiny Bus),通过线程池简化活动之间的通信,后台和主线程之间的交互;

使用 MBaaS 服务作为后端服务的支持,降低服务器开发成本,使设计开发集中在APP的前端;

相关技术分析:

RSS解析,RSS(真正简单的聚合)是一种描述和同步网络内容的格式。网站发布的全部或部分信息可以集成到RSS文件中。此文件称为提要,文件中的数据为XML格式。RSS将不同格式的网站视为频道的组合。标准RSS2.0规范中的提要文档的结构如图1所示。

图1RSS2.0中的提要文档结构

图2RSS订阅App的功能结构图

常用的XML解析方法有三种: DOM, SAX和PULL,由于移动终端内存容量的限制,应该使用SAX或PULL的解析类型来解析移动终端应用程序中的XML。在Java平台下,Rome.jar是一个优秀的RSS解析库。 它使用SAX解析XML文件。Rome.jar解析步骤描述如下。按顺序扫描文档节点时,通知事件处理程序处理事件,以上过程重复,直至解析过程结束。

通过使用Rome.jar提供的方法检索Feed(url),可以得到Synd Feed类的对象: feed=get Returner(

)。retrieve Feed(url);由于本地保存的数据可能不是由Rome.jar类提供的Synd Feed格式,因此需要添加其他属性,如ID、数据用户、订阅时间和更新时间。 因此,有必要再次转换Synd Feed以获得最终的Feed类。饲料类结构如表2所示,将Synd Feed转换为Feed对象的转换函数如表3所示。

同步饲料类的结构如表1所示:

表1同步饲料类的结构

私有对象Bean_obj Bean;

私有字符串_编码;

私有字符串_ur i;

私有同步内容_title;

私有同步内容_描述;

私有字符串

_feed类型;

私有字符串_链接;私有列表

_链接;

私有同步图像_图像;

私有列表_条目;

私有列表_模块;

私有列表_作者;

私有列表_国外标记;

私有线馈线馈电;

私有布尔保护线馈电;

表2饲料类的结构

私有字符串标题;

私有字符串url;

私有整数状态;

hellip;

私人字符串;

私人字符串创建者;

专用长用户_id;

文章在同步饲料列表lt;同步条目gt;中。 它可以通过调用Synd Feed.get Entry()方法来获得。由于本地数据更充分,我们还需要遍历Synd条目并将每个Synd条目转换为文章对象。 转换功能见表4。

3将Synd Feed转换为Feed的转换函数

公共静态饲料Conert(同步饲料Synd Feed Feed,长用户ID)

{

饲料=新饲料(同步饲料.获得标题(),

hellip;

//get icon HtmlHelper.getIconUrlString(syndFeed.getLink()),

synd Feed.get发布日期(),

hellip;

(DC Module)syn Feed.get Module()。get( 0).get Creator(),用户ID

);

返回饲料;

}

MVC、MVP和MVVM。 在Android平台上的软件开发经常使用MVC(Model-View-Controller)或MVP(Model- View-Presenter)等框架模型。 MVC和MVP的工作机制如图2所示.

在MVC框架中,请求程序如下:

  • 视图接受用户的请求
  • 视图将请求传递给Controller
  • 数据更新的控制器操作模型
  • 模型通知查看并让其更改
  • 视图根据更新的数据更新显示信息..
  • MVP框架的请求过程流程如下:
  • 视图接受用户的请求

视图将请求传递给演示者

演示者完成逻辑处理,然后修改模型

模特通知主持人让它改变

主持人更新视图

表4将同步条目转换为文章的转换函数

公共静态文章转换(同步条目)

{

条款条款=新条款(

获得标题(),

hellip;

enter.get发布日期(), null,

/recent readingtime0,/state

((DCModule) entry.getModules().get(0)).getUri(),

hellip;);

退回物品;

}

与MVC相比, MVP使用演示文稿来消除视图和演示文稿之间的耦合。 演示者将被返回到模型更改到视图。

图3MVC和MVP的工作机制 图4MVVM的工作机制

在2005年,微软的建筑师Gossman John提出了MVVM(Model Model-View-View)模型,MVVM 框架是形成MVP(Model-View-Presenter)模型和WPF组合的新框架。它是基于原有的MVP框架,与WPF的新功能融合在一起,以应对客户需求变化的日益复杂。MVVM的工作机理如3所示,其中最关键的创新在于数据绑定技术。在2015年,谷歌I/O开发人员会议推出了一个数据绑定框架(数据绑定库)。该框架可以实现视图和数据的双向绑定,完成视图和视图数据之间的自动绑定,从而降低了开发中代码量和角色之间的耦合度。 该框架的最终优势是解决了Android UI开发中的一个主要痛点,并且不再需要编写像查找视图ID这样的代码。更重要的是,视图与控制模块之间的耦合程度降低得更大。在MVVM框架中,请求处理过程类似于MVP,但在最后一步,视图和视图模型之间的交互是通过Biding Data完成的。从而减少视图与控制模块的耦合,减小视图的压力。

材料设计: 在2014年的谷歌I/O会议上,最初的设计(材料设计)被推出。 材料具有三维空间,因此每个物体具有x, y, Z三维坐标特性,并遵循物体的物理特性材料( 厚度,阴影,不能穿透, 2个物体不能在同一时间点占据相同的空间,可以移动和伸缩等)。 这是一种新的视觉设计语言,遵循经典的良好设计规则,在同时结合创新理念和新技术,解决了以往Android平台设计风格的一致性问题[14]。 材料设计结合卡片设计,并结合现实世界中的论文隐喻,最终统一了Google在设计中的表达方式,从而展现出清晰的风格。

Baa S(后端服务):

移动应用程序离不开服务后端的支持。如果移动开发团队数量太少,那么除了考虑平台适配(Android/ IOS)还必须考虑后端的架设,开发,维护等工作,这增加了开发人员的工作量,Baa S(作为服务后端)是为了帮助开发人员解决这个问题。 作为服务的移动后端为边界后端的应用程序开发人员提供集成云服务,如数据存储、帐户管理、消息或文件 推送、社交模块、地理位置、广告等。 现在已经出现了Baa S,如Stack Mob和Parse, Bmob, Talking Data,百度和新浪开放平台等。他们都提供了Baa S服务。

网络请求框架(Volley):

2013年,网络通信框架,即Volley在I/O谷歌会议上提出[16]。 网络请求可以类似于射箭,沃尔利可以处理大量请求,类似于短时间内的“火”,因此沃尔利适合快速、简单、大量的请求,如访问JSON数据和网络图片等。

RSS订阅App的要求:

RSS订阅App的主要模块包括:用户模块,渠道模块,文章模块,订阅模块和设置模块, 详细的功能结构如图4所示。

MVVM模型的应用:

使用数据绑定库实现视图和视图模型的双向绑定,是Android平台使用MVVM模型的关键点, 哪个View Model负责View状态的逻辑处理和控制,Model负责业务数据的封装; View 只负责dada的显示.,在模型层下面包括一个服务层,用于支持服务。 实现视图和视图模型的双向绑定需要在以下三个关键部分进一步实施:

    • 视图绑定视图模型(查看数据绑定)
    • 视图向视图模型发送命令
    • 查看要更新的模型通知视图(VM通知)

查看绑定视图模型(查看数据绑定)。使用数据绑定在XML文件中动态生成一个xxx绑定类(以下简称绑定类),绑定类是视图数据绑定的子类,用于实现视图和数据绑定。通过使用Data Binding的Data Binding Util提供的setContentView(activity, Layout Id)方法,可以将XML文件转换为View对象,并设置为Activity Content View,返回一个类Binding对象, 例如, 在文章视图模型绑定对象中,通过调用set文章视图模型(文章视图模型)并写入文章视图模型。通过该方法可以完成视图的生成和设置。 表5显示了在activity_article. xml中使用文章视图模型对象的情况。

表5XML文件的设置

lt;布局.gt;

lt;datagt;lt;变量名=“文章视图模型”类型=“文章视图模型”/gt;

lt;/数据gt;

...

lt;including layout=“@layout/bottom_bar”

绑定: article View Model=“@article View Model}”/gt;.lt;/lay outgt;

查看模型通知视图以更新(VM通知), 数据绑定提供了三种方法(可观察的、可观察的字段和可观察的集合)来通知视图在绑定数据发生更改时更新数据,本文使用了可观察的方法。

实际上, View Model并不是纯粹的POJO(Plainold Java Object),它包含多种附加操作,如Vie w单击事件处理,数据库读写网络请求等,好处是UI可以移交给View Model,这类似于M VP模式下的实现,即Action代理到Presenter视图模型。视图模型中的各种模型是典型的POJO对象。 从基本可观测基类继承的所有视图模型。Base Observable提供了两种方法,即(notify Change)和notify Property Changed(int字段id),通过在Binding视图中使用这两种方法来更新所有数据,并提供Bindable注解来实现注册侦听器。 表6显示了通过Bindable对文章视图模型中对象的绑定和通知。

表6视图模型中对象的绑定和通知

lt;

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[238187],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。