android数据存储-文件操作
2015-06-09 11:16
225 查看
一·
1.Android中的MVC设计模式
MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型,比如一批统计数据 你可以分别用柱状图、饼图来表示。一种视图模型也可以对于多种逻辑模型。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现 形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与《设计模式》中的观察者模式是完全一样。
MVC好处:从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式。比如说,对于一篇在线文档,用户可以选择以HTML网页的方式阅 读,也可以选择以pdf的方式阅读。从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面开发, 程序员就可以把精力放在逻辑层上。而不是像以前那样,设计人员把所有的材料交给开发人员,由开发人员来实现界面。在Eclipes工具中开发 Android采用了更加简单的方法,设计人员在DroidDraw中设计界面,以XML方式保存,在Eclipes中直接打开就可以看到设计人员设计的 界面。
Android中界面部分也采用了当前比较流行的MVC框架,在Android中:
1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入。当然,如何你对 Android了解的比较的多了话,就一定可以想到在Android中也可以使用JavaScript+HTML等的方式作为View层,当然这里需要进 行Java和JavaScript之间的通信,幸运的是,Android提供了它们之间非常方便的通信实现。
2) 控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity的肩上,这句话也就暗含了不要在Acitivity中写 代码,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的 Acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3) 模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。就是应用程序中二进制的数据。
在Android SDK中的数据绑定,也都是采用了与MVC框架类似的方法来显示数据。在控制层上将数据按照视图模型的要求(也就是Android SDK中的Adapter)封装就可以直接在视图模型上显示了,从而实现了数据绑定。比如显示Cursor中所有数据的ListActivity,其视图 层就是一个ListView,将数据封装为ListAdapter,并传递给ListView,数据就在ListView中现实。
2.Android中的文件操作
Android中的文件操作,类似于Java,因为它是基于JAVA的,所以JAVA中的文件操作思路同时适用于Android,文件操作采用一种流的概念,类似于水流和水池
输出流是像水池中注水,输入流是像外界输水
界面中的数据 -----输出 ----->>>文件 (输出流)
文件中的数据 -----输入 ----->>>界面 (输入流)
下面是JAVA关于流的一些概念(来自/article/3604390.html):
2.1 数据流
一组有序,有起点和终点的字节的数据序列。包括输入流和输出流
2.2 输入流(Input Stream)
程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道
2.3 输出流 (OutPut Stream)
程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道
二、Android程序案例-文件读写操作的实现
下面看一下效果演示:
1.布局方面只有一个TextView,一个EditText,两个Button ---View层
2.书写Model层,即FileService --Model层
然后进行配置清单文件:
然后进行Android JUnit Test测试:
测试结果:成功
测试成功后书写控制层(Control)代码 --Control层
MainActivity.java:
三、总结
从这个案例中,我们需要掌握:
1.Android MVC设计模式
2.Android文件操作的基本思路
3.JAVA异常处理机制
4.JUnit 进行单元测试
相关文章推荐
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
- Android中Activity启动默认不显示输入法解决方法
- android中引入第三方jar包方法( java.lang.NoClassDefFoundError: com.sina.weibo.sdk.auth.AuthInfo)解决办法
- ListView的相关研究(二)
- android中dip、dp、px、sp和屏幕密度
- Android Studio 类库中配置Jpush 报错 java.lang.UnsatisfiedLinkError解决方案
- Android 自定义View使用示例(三)
- Android PopupWindow使用实例
- Android自定义控件——3D画廊和图像矩阵
- GitHub Android 开源项目 优秀博客
- android jsonrpc 使用实例
- Android Studio项目中导入开源库的方法
- html实现类似android的tab切换页面
- Android sdk content loader 0%的解决方案
- Android EventBus实战
- Android Ant打包及其环境变量配置
- Android 自定义View使用示例(二)
- android实习期日常笔记(二)
- Android GridView实现滚动到指定位置的方法
- 传智播客Android7.16日入驻大广州