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; ...
随机推荐
- python 函数初识和文件操作
文件操作 打开文件:文件句柄 = open('文件路径', '模式') 打开文件的模式 w #以写的方式打开 (不可读,不存在则创建,存在则删除内容) a #以追加的模式打开(可读, 不存在则创建 ...
- Android- Context理解
学习了安卓以后还是不理解Context的用法:Api文档链接http://wear.techbrood.com/reference/android/content/Context.html 一个非常好 ...
- java中获得IP地址
public class IPTest { public static void main(String[] args) { try{ // 获取计算机名 String name = InetAddr ...
- 手把手教你Windows下Go语言的环境搭建
1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把 ...
- CollectionView就是这么简单!
UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableVie ...
- Android更新UI的两种方法——handler与runOnUiThread()
在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面 显示常会报错.抛出异常:android.view.ViewRoo ...
- 解决Oracle clob字段数据过大问题
select * from user_lobs where table_name='WX_MAIL';--SYS_LOB0001313121C00015$$ MB FROM user_segments ...
- 小知识 Vector的枚举 和foreach的用法
package com.java.c.votetor.www; import java.util.Enumeration;import java.util.Iterator;import java.u ...
- 【清橙A1094】【牛顿迭代法】牛顿迭代法求方程的根
问题描述 给定三次函数f(x)=ax3+bx2+cx+d的4个系数a,b,c,d,以及一个数z,请用牛顿迭代法求出函数f(x)=0在z附近的根,并给出迭代所需要次数. 牛顿迭代法的原理如下(参考下图) ...
- php微信2 获取自定义菜单中的access_token
//自定义菜单中获取access_token static function get_access_token($appid,$secret){ $url="https: ...