Android开发-02-MVC架构

在开始Android开发前,必须先了解大名鼎鼎的Module-View-Control模式。


View:  显示信息给用户,并接受用户操作。

Control: 相应各种事件,并进行相关处理。

Module:负责数据的获取,加工处理与保存。


View设计与实现:

方案1:

采用Android默认的XML模式,层次结构: Layout -> View

动态UI: Fragment

方案2:

采用HTML,移植或实现HTML解析,动态创建管理GUI元素。

方案3:

自己设计GUI框架,实现GUI的管理与开发。


方案1的优缺点:

优点:  开发成本低,可以快速开发。

缺点:受Android平台框架限制,没法提供行业专业领域的最优方案。

方案2:

就做日本BML解析器的经验来看,复杂度很高,适合100人以上公司。

但可以快速移植其他平台的资源,适合快速开发。

方案3:

投入成本大,只适合大公司。但可以针对行业特点,提供应用领域的专业解决方案。

这方面遇见到的最好的开发工具是Embedded Wizard,开发效率是方案1的3-5倍,可惜一个授权5000欧元。

http://www.embedded-wizard.de/home.html


个人觉得可以先用方案1,在特定领域深入研究学习后,可以转方案2或3。

方案3应该是最强大的,选择了方案3其实就等价于你站在了Android开发者位置。

这个时候,你可以选择最好的资源解码与压缩算法,最适合应用领域的脚本语言,更加方便的接口,可以跨平台支持Windows/IPhone/Android/linux

对于底层来说,只是2D/3D引擎的不同。

基本框架如下:

设计IDE,设计行业专用控件

|

                 设计脚本语言

                               |

                编写编译器,将脚本语言转化为特定平台代码


Control:

Android对应的是Activity。


Module:

Module通常对应数据。关于Module的职责,我觉得借用数据库的ACID来描述最合适。

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)


根据数据来源,大致可分为以下几种:

1> 来自运行进程

2>来自SD卡文件

3> 来自硬件I/O

4> 来自网络(比如WebService、FTP、HTTP等)

5> 来自数据库


View-> Control

主要是采用Listener模式。Activity里建立View控件与Listener实现之间的绑定。当用户触发View控件的相关动作后,

框架会调用绑定的Listener实现。

由于时间关系,目前还没有深入研究Android实现。

有个疑问:

按照默认的思维,通常实现如下:

while(1)

    if  (有来自用户的交互消息) {

          根据位置和Glyph树,决定当前要处理的View

         调用控件的Listener  疑问点

    }

疑问:

一般会马上执行注册的Listener实现, 有办法延迟执行吗?比如signal-slot机制的postsignal方法。


Control  -> View

调用setContentView(R.layout.main)建立View与XML资源的联系。

调用findViewById(R.id.name)来获取子控件。

调用控件的setOnXXXListener方法来绑定相关Listener实现。


Module-> View

这两者之间的桥梁是Adapter。


Activity-> Module

Service关系,对于耗时间的操作,需要开启多个后台Service。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。