今天看了一个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. Android(java)学习笔记177:BroadcastReceiver之 应用程序安装和卸载 的广播接收者

           国内的主流网络公司(比如网易.腾讯.百度等等),他们往往采用数据挖掘技术获取用户使用信息,从而采用靶向营销.比如电脑上,我们浏览网页的时候,往往会发现网页上会出现我们之前经常浏览内容的商 ...

  2. 学习微信小程序之css14浮动的特性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. jar打包通过exe4j转换成exe文件

    去年的时候有用过,最近写java的时候偶然用到,mark一下,方便以后看 下载链接后面附上 首先我们在eclipse上打包成jar文件,我这里只把简单的截图贴出来,详细的可以自行百度 打包jar文件: ...

  4. 整理收藏一份PHP高级工程师的笔试…

    注:本文转自 http://www.icultivator.com/p/5535.html 注:本文转自 http://www.yiichina.com/tutorial/57 整理了一份PHP高级工 ...

  5. 7第七章联接和APPLY运算符(转载)

    7第七章联接和APPLY运算符 原文链接 本文由豆约翰博客备份专家远程一键发布

  6. js使用

    js使用 HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head&g ...

  7. Oracle: Oracle行转列、列转行的Sql语句总结

    例子原型: ' ; 运行结果如下: 一.多字段的拼接 将两个或者多个字段拼接成一个字段: ' ; 运行结果: 二.行转列 将某个字段的多行结果,拼接成一个字段,获取拼接的字符串[默认逗号隔开] ' ; ...

  8. orainstRoot.sh到底执行了哪些操作

    1 #!/bin/sh      1 #!/bin/sh      2 AWK=/bin/awk      3 CHMOD=/bin/chmod      4 CHGRP=/bin/chgrp     ...

  9. git 常见问题收集(持续更新中)

    1.问题:在配置完成github上的ssh后如何使用ssh? 答: 1)http方式 url =https://github.com/username/test_repo.git 2)ssh方式:把u ...

  10. LVS 介绍以及配置应用

    1.负载均衡集群介绍 1.1.什么是负载均衡集群 负载均衡集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据的处理能力.提高网络的灵活性和可用性 搭建负 ...