Android 中的MVC与数据流动
今天看了一个Android的Training生命周期转换的例子,顿觉得他的设计非常巧妙,我的分析如下:
1.在com.example.android.lifecycle包中有:
3个正常的全屏activity,一个类似dialog的activity
2.在com.example.android.lifecycle.util包中有:
StatusTracker.java, 用于将activity产生的已执行的周期函数和当前的状态存储在两个list中
Utils.java, 用一个线程动态的更新activity中的两个显示当前周期函数调用栈帧和当前activity所处的状态
当读到这个代码时,觉得写的很顺意,很快就知道这是怎么回事儿,我把它归结为:
activity中产生数据(消息),切换状态
StatusTracker.java 存储数据(消息)
Utils.java 读取或是说消费数据,也可以说是将消息展示出来。
这似乎和出名的MVC相像,但有不全像,但此种设计确非常的清晰,而且非常的高效
这里把数据的产、存、消分开写,思路很不错
在android的开发中,我觉得也应用到MVC,他将数据与逻辑分离,这样看起来思路清晰
Activity无时无刻不在与用户接触,接受用户的事件,数据等,然后响应,做出一定的改变,
对此,我觉得应该也把相应的数据和逻辑分出来,这样不至于第二次看代码时,还不知道这
部分是干嘛用的,还得苦心思去冥想这个类在此扮演了什么角色。
Android中,呈现数据的效果无疑不是xml文件,这个可以做为view,没有逻辑
在activity中有一堆的事件监听,我认为可以把获得用户的事件的消息分离出来,另外写一个
包或类控制器来处理,监听事件中只负责接受消息,将消息传入控制器,根据控制器来更新view
模型当然是独立的了,有控制器来连接,主要用来做数据的存储、封装等
总的来说,xml文件为试图view ,监听器做为控制器的一部分, 而模型应当独立出来,这样我觉得代码
的维护就比较简单了。
Android 中的MVC与数据流动的更多相关文章
- Android中突发情况Activity数据的保存和恢复
Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...
- Xamarin Android 中Acitvity如何传递数据
在xamarin android的开发中,activity传递数据非常常见,下面我也来记一下在android中activity之间传递数据的几种方式, Xamarin Android中Activity ...
- Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
- Android中的5种数据存储方式
本文转自 http://hi.baidu.com/maguowei/blog/item/7aca46c25574a33ae5dd3ba4.htmlAndroid数据存储Android提供了5种方式存 ...
- Android中使用gzip传递数据
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来减少文件大小,减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时 ...
- android中listview分页载入数据
前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...
- Android中Activity之间的数据传递
在开发中,我们经常涌用到Activity,那么既然用到了Activity,就一定免不了在两个或者多个Activity之间传递数据.这里我们先说一说原理,然后在看看代码和例子. 情况A:我们需要从Act ...
- Android中解析JSON格式数据常见方法合集
待解析的JSON格式的文件如下: [{"id":"5", "version":"1.0", "name&quo ...
- android 中解析json格式数据
本文来自http://tonysun3544.iteye.com/category/188238 package com.tony.json; import android.app.Activity; ...
随机推荐
- MFC/VC++ 响应回车键的实现
在VC++中,要实现对回车键的响应实现,一般通过截获消息来响应,即通过处理BOOL PreTranslateMessage(MSG* pMsg)这个函数来处理 实现如下: BOOL PreTransl ...
- cocos2dx_moveby_n_moveto
对于参数(SEC, POINT)来说,CCMoveTo是移动到WND的绝对的POINT,CCMoveBy是相对当前位置移动一个相当于(0,0)到POINT的向量.
- [iOS 开发] Xcode常见报错及解决办法
报错一: 在iOS7的真机运行时,弹出错误:App installation failed. There was an internal API error. 如图 解决办法: 在Xcode -> ...
- Summary: How to calculate PI? Based on Monte Carlo method
refer to: http://www.stealthcopter.com/blog/2009/09/python-calculating-pi-using-random-numbers/ Duri ...
- 传送门(portal)
Linux: #RHEL/CentOS/fedora系列为主 Basis: Commands: Services: SpamAssassin: Tomcat: Hadoop: Hive: Pig: Z ...
- PHP的数据库 之 关闭问题
首先,PHP由于有垃圾回收机制,所以数据库即使你不手动关闭,也有自动去关闭的机制, 这里就和操作文本流不同,文本流需要手动去关闭,不然会发生内存浪费现象 并且,PHP在同时连接多个DB的时候,连接到一 ...
- 浅谈负载均衡之【tomcat分布式session共享】
1)整理集成所需jar kryo-1.0.3.jar kryo-serializers-0.8.jar memcached-2.4.2.jar memcached-session-manager-1. ...
- JavaScript获取网页属性包括宽、高等
function getWindowInfo() {var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidt ...
- rest例子
http://www.xdemo.org/spring-restful/(可用) http://www.open-open.com/lib/view/open1389075258125.html(有例 ...
- Java随机生成定长纯数字或数字字母混合数
(转)Java随机生成定长纯数字或数字字母混合数 运行效果图: 具体实现代码