如何构建Android MVVMdojo构建ajax应用程序序

1094人阅读
从零开始搭建android框架系列(10)
安卓架构文章合集(a collection of android Architecture)
博客原地址:
github地址:
请关注github,后续会在github上面更新
这是从各大平台上参考的android架构文章,文章数据,主要参考自Info,推荐关注:
1 Android官方架构:
(google官方android架构项目)
2 国内各大平台架构:
2 MVVM & MVP & MVC
(viewmodel,安卓中的databinding)
(android中的mvvm)
(MVP架构思想,Retrofit RESTful API 框架的配合,RxJava 响应式编程)
(star2000+的MVP实例)
(上面这个github对应的文章)
(MVP的介绍,MVP必读经典)
(MVP处理Activity和Fragment,使用了Dagger 注入)
(star 3000+的mvp,mvvm实例)
(使用clean architecture 和mvp的实例)
( 使用material design +MVP实现的Material-Movies)
(MVP+clean Architecture 项目)
(本文作者MVP demo github地址)
(MVVM介绍,这个博客很不错)
(data-binding guide官网)
(MVC VS. MVP VS. MVVM)
(iOS中MVVM的一种实现,对概念的理解有帮助)
3 Clean Architecture
(clean architecture出处)
(The Clean Architecture文章的例子)
(google官网架构中文解析)
/ (android快速开发框架)
请关注github更新
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:73965次
积分:1578
积分:1578
排名:千里之外
原创:64篇
转载:37篇
译文:14篇
阅读:8032
(1)(1)(4)(2)(6)(2)(8)(6)(28)(4)(42)(10)(6)5295人阅读
Android Mvvm(3)
http://robobinding.github.io/RoboBinding/getting_started.zh.html#_layout
1. RoboBinding是什么?
Android应用的粘接剂&- RoboBinding是一个实现了数据绑定&&模式的Android开源框架。RoboBinding
帮助你编写更可读,易于测试与维护的UI代码。
2. Hello AndroidMVVM(Presentation Model)
基于RoboBinding的应用,一个Activity通常由三个部分组成:Layout xml,Activity class 与 PresentatonModel。 以下以最简单的为例。
2.1. Layout
在layout中声明RoboBinding命名空间,属性与事件绑定。
activity_main.xml
2.2. Presentation Model(pure POJO)
在presentation model类中声明相应的属性与方法。Presentation model 为纯POJO类。
org.robobinding.androidmvvm.PresentationModel.java
2.3. Activity Class
在activity类中将layout与对应的presentation model绑定在一起。
org.robobinding.androidmvvm.MainActivity.java
最简单的AndroidMVVM就完成了。这里我们用Binders工具类。在实际的开发中,我们推荐使用org.robobinding.binder.BinderFactoryBuilder。 然后将BinderFactory实例保存在Android application实例里或由第三方类库如RoboGuice来管理,以便在整个应用中共享。
2.4. RoboBinding的介绍视频
3. 开发环境
3.1. Eclipse
首先安装。
3.1.1. 不使用AspectJ
把&或&&加入项目的libs目录, 然后右击项目→Properties→Java Build
Path→Libraries→Add Jars,将jar加入classpath。并在Order and Export中勾选它(或它们)。
Figure 1. 项目构建设置(以robobinding-[version]-with-dependencies.jar为例)
3.1.2. 使用AspectJ
RoboBinding aspects可以帮你自动的产生代码,以便减少工作量。 首先安装&Eclipse 插件。 右击项目→Configure→Convert
to AspectJ Project。AspectJ natures将被添加到项目的.project文件。
将&&或&&加入项目的classpath。 并在Order
and Export中勾选它(或它们)。
最后确认 robobinding jar在Aspect路径里,右击项目→Properties→AspectJ Build→Aspect Path→Add JARs。
Figure 2. AspectJ设置(以robobinding-[version]-with-aop-and-dependencies.jar为例)
3.1.3. Annotaton Processing设置
下载RoboBinding的codegen-[version]-with-dependencies.jar。然后按照下图进行设置。codegen-XX.jar只用于代码产生,项目不依赖于这个jar。
Figure 3. Annotaton Processing设置
3.2. Android Studio
3.2.1. 不使用AspectJ
在gradle.build里添加robobinding依赖。
请参考&下的AndroidMVVM, RoboBinding-album-sample以及RoboBinding-gallery例子项目。
3.2.2. 使用AspectJ
在gradle.build里添加RoboBinding Android aspectj plugin。
在gradle.build里添加robobinding依赖。
请参考&下的 RoboBinding-album-sample以及RoboBinding-gallery例子项目。
3.2.3. Annotation processing设置
在gradle.build里添加apt plugin。
3.3. ProGuard
保留PresentationModel的共公方法以及生成的代码的构造函数信息。保留所有的annoations。
增加以下的内容,使ProGuard保留view listeners的构造函数名:
增加以下的内容,抑制google guava的javax.annotation.XX 引用警告。
请参考&下的 RoboBinding-album-sample例子项目的ProGuard配置文件[project]/app/proguard-rules.txt。
4. 主要概念与特性
Figure 4. 基于RoboBinding的Android应用
一个Android应用包含了若干个Activity以及其它的元素。在基于RoboBinding的应用里一个Activity包含了Activity主文件,Layout以及PresentationModel类。 (而Android普通应用一个Activity只包含了Activity主文件与Layout)。原先位于Activity内的显示层逻辑被提取到独立的文件PresentationModel内。 Activity利用RoboBinding将Layout与对应的显示逻辑PresentationModel绑定在一起。把Layout中的显示数据与PresentationModel中的属性绑定;
Layout中的事件与PresentationModel中的方法绑定。RoboBinding替代了原先在Activity中的UI关联代码,减少应用代码。 在理想的情况下,PresentationModel只包含显示逻辑不包含UI代码,便与独立测试。
以下的例子代码来自&。
4.1. 单向属性绑定
单向绑定是指presentation model上的属性更新会自动的同步到相应的视图属性上。
activity_view.xml
ViewPresentationModel.java
RoboBinding遵循Java Beans标准,当暴露属性时,我们将提供getter与setter方法。 单向绑定时,presentation model中的属性只要求有getter。因为视图不会更新回presentation model。 已支持的UI绑定属性,请参考。
4.2. 双向属性绑定
双向绑定在单向绑定的基础上,增加了将视图上的变更同步回presentation model相应的属性上。
EditText的text属性是支持双向绑定的一个例子。双向绑定的语法是在单向绑定属性的前面加一个$符号。
activity_edittext.xml
org.robobinding.gallery.presentationmodel.EditTextPresentationModel.java
当将属性声明为双向绑定时,presentation model的对应属性必须有setter方法,以便于视图的更新值被设置到presentation model属性上。
4.3. 事件处理
即将视图中的事件绑定到presentation model相应的方法上。
activity_gallery.xml
org.robobinding.gallery.presentationmodel.GalleryPresentationModel.java
当onClick 事件被触发时,showDemo方法被调用。showDemo方法可以带有可选的相应的事件参数,这里为org.robobinding.widget.view.ClickEvent。 已支持的UI事件,请参考。
4.4. AdapterViews绑定
当我们需要绑定AdapterViews,RoboBinding需要你在presentation model上提供数据集属性。数据集属性类型可以是一个Array,List或者。
除此之外,我们还要提供ItemPresentationModel(即数据项presentation model),以便将每个数据项的视图绑定到ItemPresentationModel上。 RoboBinding里,我们通过在数据集属性上使用@ItemPresentationModel annotation做到。
activity_adapter_view.xml
org.robobinding.gallery.presentationmodel.AdapterViewPresentationModel.java
以下提供ItemPresentationModel以及数据项layout。Android中Adapter实现了重用,所以ItemPresentationModel也会被重用,即需要实现updateData方法。
org.robobinding.gallery.presentationmodel.StringItemPresentationModel.java
例子中数据项layout为android系统提供的simple_list_item_1.xml。通过,
我们指定了simple_list_item_1.xml的text1.text关联到StringItemPresentationModel.value属性。
@ItemPresentationModel有一个factoryMethod属性。当ItemPresentationModel有一些外部的依赖时, 我们可以在PresentationModel里提供一个factoryMethod方法来创建这些ItemPresentationModels。 这样我们可以为这些ItemPresentationModel提供外部依赖并对其进行任意的配置。例如:
4.5. 羽量级关系数据与对象cursor映射
AdapterViews绑定中,我们提到数据集属性类型的其中一种为。 由于应用中我们通常都习惯于操作对象并尽量隔离关系数据操作的那部分代码,RoboBinding加入了羽量级对象化的Cursor
- TypedCursor。 通过org.robobinding.itempresentationmodel.RowMapper&T&来将一行的关系数据映射为一个对象实例。
org.robobinding.gallery.presentationmodel.TypedCursorPresentationModel.java
org.robobinding.gallery.model.typedcursor.GetAllQuery.java
org.robobinding.gallery.model.typedcursor.ProductRowMapper.java
4.6. 菜单绑定
将 res/menu 下的菜单资源与对应的Presentation Model绑定在一起。以下是一个简单的例子。
res/menu/context_menu.xml
org.robobinding.gallery.presentationmodel.ContextMenuPresentationModel.java
4.7. Presentation Model
我们需要在每个PresentationModel上用@org.robobinding.annotation.PresentationModel进行标注。 当在PresentationModel里需要用到org.robobinding.presentationmodel.PresentationModelChangeSupport时, 我们的PresentationModel需要实现org.robobinding.presentationmodel.HasPresentationModelChangeSupport接口。
这样框架内部通过这个接口来使用同一个PresentationModelChangeSupport实例。
有两种方式实现PresentationModel。即使用AspectJ与不使用AspectJ。以下为两种方式的对比。
4.7.1. 不使用AspectJ
可以参考与项目。
4.7.2. 使用AspectJ
可以参考与项目。
5. 创建视图绑定实现
以下的例子代码来自&。
5.1. 简单的单向绑定属性
例如我们为android.View添加一个enabled绑定属性 -&。
然后在BinderFactoryBuilder加入 -&。
RoboBinding 为我们自动产生以下代码。
由于所有的绑定都是静态的,对性能没有影响。
5.2. 其它绑定实现
除了以上简单单向属性绑定之外,还有事件绑定,多值属性绑定与复合属性绑定。当要实现这些绑定时,我们需要自己扩展CustomViewBinding实现绑定。 例如实现事件绑定如下。
其它的绑定实现,可以参考RoboBinding的绑定属性实现 -&。
5.3. 自定义组件或第三方组件
通过为自定义组件,第三方组件或未实现绑定的Android widget提供视图绑定实现,使它们更易于使用。在RoboBinding中,视图绑定实现方法是一致的。
Figure 5. 自定义 Title Description Bar
我们以上图的自定义组件TitleDescriptionBar为例。该组件包含了标题与描述两个部分。在输入新的标题与描述后,点击'Apply',自定义组件的内容就更新为新的内容。
我们想使TitleDescriptonBar组件使用起来能像以下。
activity_custom_component.xml
以下是TitleDescriptionBar自定义组件的实现代码主要部分(如何实现自定义组件,请参考):
org.robobinding.gallery.model.customcomponent.TitleDescriptionBar.java
自定义组件的layout:title_description_bar.xml
5.3.1. 实现绑定属性
TitleDescriptionBar有标题与描述两个简单单向属性绑定 -&。
5.3.2. 注册视图绑定实现
通过org.robobinding.binder.BinderFactoryBuilder注册视图绑定实现 -&。
这样我们很容易的就完成了视图绑定实现。我们以同样的方式可以为任何第三方组件或未实现绑定的Android widget提供视图绑定实现。
5.4. 覆盖已有的视图绑定实现
当RoboBinding框架已有的视图绑定实现不满足需求, 我们可以注册覆盖已有的框架所提供的默认实现。
5.5. 扩展已有的视图绑定实现
扩展已有的TextViewBinding并添加typeface属性绑定。
6. Album唱片集例子项目学习
唱片集例子项目是Martin Fowler原始版本基于RoboBinding的Android翻译(Martin Fowler基于.Net的&&)。 项目地址&。
Figure 6. Album唱片集例子原型
以下&.&表示相对于org.robobinding.albumsample的包路径。
以上是Album唱片集例子原型图。项目遵循RoboBinding应用的标准结构,即一个Activity由Activity主文件,Layout与PresentationModel Java文件组成。 项目源代码中包含以下几个包:org.robobinding.albumsample.activity包含所有Activity的主文件,org.robobinding.albumsample.presentationmodel包含所有PresentationModel文件,
org.robobinding.albumsample.model仅包含一个Album实体实现文件,org.robobinding.albumsample.store包含一个基于内存Album实体存储实现AlbumStore。接下来列出上述五张图所对应的实现文件。
图[Home Activity]由.activity.HomeActivity,home_activity.xml与.presentationmodel.HomePresentationModel组成。
图[View Albums Activity]由.activity.ViewAlbumsActivity,view_albums_activity.xml与.presentationmodel.ViewAlbumsPresentationModel组成; 其唱片集每行的唱片信息由.presentationmodel.AlbumItemPresentationModel与album_row.xml组成;以及一个当唱片集为空时Layout显示文件albums_empty_view.xml。
图[Create Album Activity]与图[Edit Album Activity]由相同的.activity.CreateEditAlbumActivity,create_edit_album_activity.xml与.presentationmodel.CreateEditAlbumPresentationModel组成。
图[View Album Activity]由.activity.ViewAlbumActivity,view_album_activity.xml与.presentationmodel.ViewAlbumPresentationModel组成; 其删除对话框由.activity.DeleteAlbumDialog,delete_album_dialog.xml与.presentationmodel.DeleteAlbumDialogPresentationModel组成。
以下以[View Albums Activity]为例,对源代码做简单介绍。Activity类ViewAlbumsActivity只做了一件事,就是把Layout view_albums_activity.xml与ViewAlbumsPresentationModel关联起来。 view_albums_activity.xml里包含了三个子视图按顺序为TextView, ListView与Button。TextView没有包含任何绑定信息。
ListView的绑定到ViewAlbumsPresentationModel.albums数据集属性。&绑定到ViewAlbumsPresentationModel.viewAlbum(ItemClickEvent)方法,单击某个唱片项时,该事件方法将被调用。&设置了当唱片集为空时的显示内容Layout。设置了唱片项的行显示Layout,结合在ViewAlbumsPresentationModel.albums上给出的数据项PresentationModel,即,
来显示每一个唱片行。在album_row.xml里包含了两个简单的TextView,其与分别绑定到AlbumItemPresentationModel.title/artist属性。
在view_albums_activity.xml里的最后一个Button视图,绑定到ViewAlbumsPresentationModel.createAlbum()方法。
7. Gallery 示例内容
以下的入口类都位于项目的org.robobinding.gallery.activity包下。
8. 项目结构组织与最佳实践
Presentation Model(MVVM)模式的初终是在MVC模式的基础之上,进一步的解耦,将UI的状态与逻辑放入&&Presentation Model,可被很容易的独立单元测试。 并使得View层→Presentation
Model层→Model层 形成一个单向的依赖关系。当应用这个模式时,我们应该始终遵循这些基本原则。&&是一个遵循最佳实践的例子。 推荐阅读Martin Fowler的原始&。
8.1. 总体项目结构
Figure 7. Project structure
在Android项目中,View层由Activity(Fragment)与Layout组成,Model层即业务模型层包含了各种的Services,持久化层,网络访问服务,以及业务服务等。 各层之间的依赖与访问关系如上图的箭头所示,View层不直接调用业务模型层。
8.2. 常见设计问题的解决方案
9. 其它资源
2012年一月&Robert Taylor 写了一些入门的文章在&&和&。
2012年二月&在London SkillsMatter,Robert Taylor作的RoboBinding介绍视频可以在&找到。
2014年7月&Cheng Wei做的RoboBinding介绍视频可以在&找到。
2014年9月&Adil在&&演讲如何用MVVM模式写出干净,易维护,可测试的Android代码。
&是一个使用MVVM模式最小的例子。
&是Martin Fowler的&&模式原始例子的基于RoboBinding的Android翻译版本。
&展示RoboBinding的各种功能与特性的用法。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:517909次
积分:6276
积分:6276
排名:第3002名
原创:87篇
转载:308篇
评论:104条
(1)(4)(13)(18)(16)(8)(2)(3)(4)(6)(1)(3)(8)(2)(5)(3)(5)(36)(34)(48)(27)(22)(27)(7)(12)(10)(10)(2)(12)(4)(17)(17)(9)(1)(2)安卓实战之如何快速搭建app架构
博客专家
安卓实战之如何快速搭建app架构
最近公司的另一个项目又要立项了,作为公司的唯一安卓工程师任务来了(新来的移动端的老大说项目还是主要你负责,我就负责帮你们安排下进度),听了这话我是伤心的在这公司不管是几个还是1个安卓开发都是我来搭建,干着与工资不符的事情,好的一点是开发没有人干涉平时也能学习自己想学的东西。
如何选择app架构(MVC/MVP/MVVM)
最近越来越多的人开始谈论架构。我周围的同事和工程师也是如此。尽管我还不是特别深入理解MVP,但是还是觉得比较牛逼,然后呢也想在公司的项目中去使用它。
项目时间紧迫:快速开发框架(迫不得已)
目前网络上也有一些针对Android的快速开发框架,下面介绍3个主要的快速开发框架。针对这些快速开发框架,个人认为可以参考,但并不推荐使用,因为App整体依赖一个个人维护的框架风险实在太大,框架存在一些学习成本,本身也不一定完全符合App的需求,使用后可能存在代码的臃肿,还有就是架构限制。
GitHub项目地址:
Afinal是一个Android的IOC,ORM框架,内置了四大模块功能:FinalAcitivity, FinalBitmap, FinalDb, FinalHttp。通过FinalActivity,可以通过注解的方式进行绑定UI和事件。通过FinalBitmap,可以方便的加载Bitmap图片,而无需考虑OOM等问题。通过FinalDB模块,通过一行代码就可以对Android的SQlite数据库进行增删改查。通过FinalHttp模块,可以以Ajax形式请求Http数据。
然而项目从去年就没有人更新维护了,ioc框架很多人不太喜欢而且性能不好。
GitHub项目地址:
xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…
xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
xUtils3变化较多所以建立了新的项目不在旧版(/wyouflf/xUtils)上继续维护, 相对于旧版本:
HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
支持标准的Cookie策略, 区分domain, path…
事件注解去除不常用的功能, 提高性能.
数据库api简化提高性能, 达到和greenDao一致的性能.
图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), 支持圆角, 圆形, 方形等裁剪, 支持自动旋转…
可以看出xUtils3对于快速开发是一个不错的选择。
自己从零开始搭建app架构
简单的看下这三个架构模式:
MVC:Model-View-Controller,经典模式,很容易理解,主要缺点有两个:
View对Model的依赖,会导致View也包含了业务逻辑;
Controller会变得很厚很复杂。
MVP:Model-View-Presenter,MVC的一个演变模式,将Controller换成了Presenter,主要为了解决上述第一个缺点,将View和Model解耦,不过第二个缺点依然没有解决。
MVVM:Model-View-ViewModel,是对MVP的一个优化模式,采用了双向绑定:View的变动,自动反映在ViewModel,反之亦然。
面对众多的架构模式你会选择哪个?
MVC,MVP还是MVVM?
越高级的模式复杂性越高,实现起来也越难。然后搭建项目时也是看项目的需求,别人说好你也有要实用才好,高效的实现项目的功能才是最好的架构模式。
那么,哪一个才是最好的呢?
个人觉得适合你的才是最好的,不要去盲目的跟风,大家说mvp好那你就使用咯,没有实践就没有话语权,所以说用哪种架构模式本人不发表任何意见:任何模式的动机都是一样的,那就是如何避免复杂混乱的代码,让执行单元测试变得容易,创造高质量应用程序,开发维护更高效。
在实际项目中思考架构时,也不会想着要用哪种模式,我只思考现阶段,以现有的人力资源和时间资源,如何才能更快更好地完成需求,适当考虑下如何为后期扩展或重构做准备。
我项目中的架构
这是我上一个项目的包架构:
当然咯,是按功能分的包,项目的功能不一样然后分包也不一样,但是基本大同小异。
所以确定架构分包的时候那就按你的需求来咯。
从上面可以看出:架构分包的时候我们包括逻辑功能和基础功能(通用功能)。
基础功能模块:
日志管理系统(LogManager)
不管哪个项目都需要自己的一套日志管理,一是为了生产调试时能更加高效的查看过滤日志,二是为了打包发布的时候用开关控制日志是否打印。
(我的日志用的是凯子哥的:)
异常处理(crashManager)
作用:当程序遇见异常情况时我们能够自定义异常处理,二是程序对不同的机型有不同的反应,那么测试时候可能没有发现但是我们可以把捕获的crash上传到服务器,便于异常收集和bug修复。
utils(工具类)
根据你的项目需求来合理定制你的工具类,将会对你的项目开发速度有很大的提升(反馈,版本校验更新你肯定能够用到)
看下我上个项目的工具类:
permission(权限管理系统)
这功能是绝对项目中需要的,别告诉我你的项目还没有适配安卓6.0,适配了就肯定会有权限管理,我这里用的是,也还可以吧,反正github上的权限管理的开源东西比较多,觉得合适就ok。
哈哈,这样你的基础功能都搭建好了,然后就是一些逻辑功能的封装了。
逻辑功能模块:
1.封装自己的application和baseActivity类,最大可能的节省代码,加入mvp的思想来架构。
2.选择自己喜欢的网络请求框架并且适当合理的进行封装,加快开发的效率。
3.针对带有滚动控件嵌套有可能产生的滑动冲突,或者显示不全我们优先自定义一下viewpager,listview,gridview等。
4.封装listView或者recyclerView打造万能的适配器,觉得翔哥的封装的不错[ 打造万能的适配器](/hongyangAndroid/baseAdapter)。
5.一般的网络数据格式是json(我们就逗:普通数据json,刷卡交易数据xml),所以呢我json格式的用gson封装一下,xml格式暂时用的是pull解析后bean对象封装。
6.数据库的封装,对数据苦要求不高的话可以用原生的简单封装一下curd就好了,要求高点的话那就用第三方的好了。
开发过程中第三方开源库的抉择
图片加载库:
Glide:相比较UIL,glide可以支持gif和短视频,支持与activity,fragment,application生命周期的联动,支持 okhttp、Volley
Fresco:三级缓存牛逼,对多帧动画图片支持更好,如 Gif、WebP
UIL:老牌的虽然不再更新维护,但功能强大
根据你的项目需求选择,熟悉UIL就用它,个人推荐Glide
网络请求库:
okhttp是高性能的http库,支持同步、异步,而且实现了spdy、http2、websocket协议,api很简洁易用,和volley一样实现了http协议的缓存。
简化了网络请求流程,同时自己内部对OkHtttp客户端做了封装,同时2.x把之前1.x版本的部分不恰当职责都转移给OkHttp了(例如Log,目前用OkHttp的Interceptor来实现)
volley是一个简单的异步http库,仅此而已。缺点是不支持同步,这点会限制开发模式;不能post大数据,所以不适合用来上传文件。
个人建议使用retrofit,volley的通用性不高(资料最多)。
事件总线库:
主要用来消息/事件的传递,却能实现组建之间的解耦。
eventBus3.0和otto都是使用注解的方式(@Subscribe、@Produce)来标注方法,Otto更多的使用场景是在主线程中,相对是轻量级的。
如果你对是不是轻量级不关心的话,我觉得两个差不多,但是还是很多人推荐使用otto。
依赖注入库:
butterknife8.0:
在任何项目中使用butterknife都是正确且没有问题的. 非常轻量级的库,原因是性能高节省代码,而且不是你们所想的反射机制实现的。
Dagger2:它是不具有动态性的(使用时完全不使用反射)但是生成的代码的简洁性和性能都是与手写的代码同水准的。
2个都是很棒的,你可以选择额。
数据库存储:
LitePal:LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,LitePal很“轻”,jar包只有100k不到,使用起来也比较简单,源码地址为地址,郭神开发的就是牛。
greenDAO:greenDAO与LitePal不同,其原理不是根据反射进行数据库的各项操作,而是一开始就人工生成业务需要的Model和DAO文件,业务中可以直接调用相应的DAO文件进行数据库操作,从而避免了因反射带来的性能损耗和效率低下。但是由于需要人工生成model和DAO文件,所以greenDAO的配置就略显复杂。
greenDAO用起来繁琐但是效率高点,LitePal用起来简单,所以你自己选择吧,个人还是觉得LitePal好用点。
:ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。
可缓存普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。
替换SharePreference当做配置文件
可以缓存网络请求数据,比如oschina的android客户端可以缓存http请求的新闻内容,缓存时间假设为1个小时,超时后自动失效,让客户端重新请求新的数据,减少客户端流量,同时减少服务器并发量。
哈哈项目需要的基本架构需要的开源库都有了,你可以放心的开发了。
其实架构并不是那么难,也不要别人说怎么好就怎么干,你要相信总有一个东西是适合你的,打个比喻app架构就是盖房子,砖少就盖矮点吗,但是必须保证得结实,就像 框架不一定要强大但是必须健壮具有扩展性。
时间不早了,各位早点休息。
更多的Material Design系列效果,请去star 我的
我的热门文章
即使是一小步也想与你分享}

我要回帖

更多关于 android应用程序开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信