今天看了一个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与数据流动的更多相关文章

  1. Android中突发情况Activity数据的保存和恢复

    Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...

  2. Xamarin Android 中Acitvity如何传递数据

    在xamarin android的开发中,activity传递数据非常常见,下面我也来记一下在android中activity之间传递数据的几种方式, Xamarin Android中Activity ...

  3. Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  4. Android中的5种数据存储方式

    本文转自  http://hi.baidu.com/maguowei/blog/item/7aca46c25574a33ae5dd3ba4.htmlAndroid数据存储Android提供了5种方式存 ...

  5. Android中使用gzip传递数据

    HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来减少文件大小,减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时 ...

  6. android中listview分页载入数据

    前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...

  7. Android中Activity之间的数据传递

    在开发中,我们经常涌用到Activity,那么既然用到了Activity,就一定免不了在两个或者多个Activity之间传递数据.这里我们先说一说原理,然后在看看代码和例子. 情况A:我们需要从Act ...

  8. Android中解析JSON格式数据常见方法合集

    待解析的JSON格式的文件如下: [{"id":"5", "version":"1.0", "name&quo ...

  9. android 中解析json格式数据

    本文来自http://tonysun3544.iteye.com/category/188238 package com.tony.json; import android.app.Activity; ...

随机推荐

  1. MFC/VC++ 响应回车键的实现

    在VC++中,要实现对回车键的响应实现,一般通过截获消息来响应,即通过处理BOOL PreTranslateMessage(MSG* pMsg)这个函数来处理 实现如下: BOOL PreTransl ...

  2. cocos2dx_moveby_n_moveto

    对于参数(SEC, POINT)来说,CCMoveTo是移动到WND的绝对的POINT,CCMoveBy是相对当前位置移动一个相当于(0,0)到POINT的向量.

  3. [iOS 开发] Xcode常见报错及解决办法

    报错一: 在iOS7的真机运行时,弹出错误:App installation failed. There was an internal API error. 如图 解决办法: 在Xcode -> ...

  4. 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 ...

  5. 传送门(portal)

    Linux: #RHEL/CentOS/fedora系列为主 Basis: Commands: Services: SpamAssassin: Tomcat: Hadoop: Hive: Pig: Z ...

  6. PHP的数据库 之 关闭问题

    首先,PHP由于有垃圾回收机制,所以数据库即使你不手动关闭,也有自动去关闭的机制, 这里就和操作文本流不同,文本流需要手动去关闭,不然会发生内存浪费现象 并且,PHP在同时连接多个DB的时候,连接到一 ...

  7. 浅谈负载均衡之【tomcat分布式session共享】

    1)整理集成所需jar kryo-1.0.3.jar kryo-serializers-0.8.jar memcached-2.4.2.jar memcached-session-manager-1. ...

  8. JavaScript获取网页属性包括宽、高等

    function getWindowInfo() {var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidt ...

  9. rest例子

    http://www.xdemo.org/spring-restful/(可用) http://www.open-open.com/lib/view/open1389075258125.html(有例 ...

  10. Java随机生成定长纯数字或数字字母混合数

    (转)Java随机生成定长纯数字或数字字母混合数 运行效果图: 具体实现代码