在开始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。