android开发三大框架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发三大框架相关的知识,希望对你有一定的参考价值。
参考技术A XUtil框架、volley、ImageLoader框架。1、XUtil框架:
主要有四大模块:
(1) 数据库模块:android中的orm框架,一行代码就可以进行增删改查;支持事务,默认关闭;可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);支持绑定外键,保存实体时外键关联实体自动保存或更新;自动加载外键关联实体,支持延时加载;支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
(2)注解模块:android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;新的事件绑定方式,使用混淆工具混淆后仍可正常工作;目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
(3)网络模块:支持同步,异步方式的请求;支持大文件上传,上传大文件不会oom;支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
(4)图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;支持加载网络图片和本地图片;内存管理使用lru算法,更好的管理bitmap内存;可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等…
2、volley:JSON,图像等的异步下载;网络请求的排序(scheduling)网络请求的优先级处理缓存多级别取消请求和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)。
3、ImageLoader框架:支持多线程图片加载。提供丰富的细节配置,比如线程池大小,HTPP请求项,内存和磁盘缓存,图片显示时的参数配置等等;提供双缓存,支持加载过程的监听;提供图片的个性化显示配置接口。
android开发一般都使用啥框架
目前框架使用的主要都是开源框架,都可以在github上找到:1、volley
2、android-async-http
3、Afinal框架
4、xUtils框架
5、ThinkAndroid
6、LoonAndroid
主要有以下模块:
(1) 自动注入框架(只需要继承框架内的application既可)
(2)
图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
(3) 网络请求模块(继承了基本上现在所有的http请求)
(4)
eventbus(集成一个开源的框架)
(5) 验证框架(集成开源框架)
(6) json解析(支持解析成集合或者对象)
(7) 数据库(不知道是哪位写的 忘记了)
(8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
(9)
自动更新模块
(10) 一系列工具类 参考技术A 开源框架推荐:
网络
* [okhttp](square/okhttp · GitHub)
* [android-async-http](loopj/android-async-http · GitHub)
事件总线
* [otto](square/otto · GitHub)
* [EventBus](greenrobot/EventBus · GitHub)
依赖注入
* [Dagger](square/dagger · GitHub)
* [RoboGuice](roboguice/roboguice · GitHub)
* [ButterKnife](JakeWharton/butterknife · GitHub)
图片
* [Fresco](facebook/fresco · GitHub)
* [Glide](bumptech/glide · GitHub)
* [picasso](square/picasso · GitHub)
数据库
* [greenDao](greenrobot/greenDAO · GitHub)
* [ormlite](j256/ormlite-android · GitHub)
* [LitePal](LitePalFramework/LitePal · GitHub)
响应式编程
* [RxJava](ReactiveX/RxJava · GitHub)
* [RxAndroid](ReactiveX/RxAndroid: RxJava bindings for An...)
日志输出
* [logger](orhanobut/logger: Simple, pretty and powerf...)
* [android-CLog](liaohuqiu/android-CLog)
* [KLog](ZhaoKaiQiang/KLog · GitHub)
* [LogUtils](pengwei1024/LogUtils · GitHub)
崩溃统计平台
* [腾讯bugly](腾讯Bugly - Android Crash(崩溃)_iOS Crash(崩溃)_ANR_卡顿)
* [Crittercism](Crittercism - Developer Home)
* [Crashlytics](The most powerful, yet lightest weight crash reporting solution for iOS and Android
developers.)
架构设计
这个肯定得了解下MVC,MVP,MVVM还有设计模式这些,这里有几个开源项目推荐下
philm
Movie collection and information app for Android.
Github地址:chrisbanes/philm: Movie collection and info...
SimpleNews
基于Material Design和MVP的新闻客户端
Github地址:GitHub - liuling07/SimpleNews: 基于Material Design和MVP的新闻客户端
GankDaily
A application show technical information every working days, use MVP pattern.
Github地址:maoruibin/GankDaily
SimplifyReader
Github地址:GitHub - SkillCollege/SimplifyReader: 一款基于Google Material Design设计开发的Android客户端,包括新闻简读,图片浏览,视频爽看 ,音乐轻听以及二维码扫描五个子模块。
NBAPlus
Github地址:SilenceDut/NBAPlus · GitHub
PhotoNoter
Github地址:yydcdut/PhotoNoter
Meizhi
Github地址:drakeet/Meizhi: gank.io unofficial client, RxJava & Retrofit
DebugDrawer
Android Debug Drawer for faster development
Github地址:palaima/DebugDrawer · GitHub
ViewServer
Local server for Android's HierarchyViewer
Github地址:romainguy/ViewServer · GitHub
AndroidWiFiADB
IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected.
Github地址:https://github.com/pedrovgs/AndroidWiFiADB 参考技术B Android架构经验:
① Android基本就是一个MVC框架了,你不需要再特别找其他所谓框架进行包装。我建议从component-orienteddesign入手,善用继承来写出customizedwidgets。说实话,你只要按照AndroidOnline Documentation操作即可。。。
② Android本身就是一个MVC框架,Java也是一个重量级的语言。
我觉得,不需要再加新的框架了,增加团队学习成本了。
你的精力应该花在拆解业务,分成若干个library,如何集成如何分工上面。
③ 把代码耦合降低,能抽象的抽象,提高代码的复用能力。MVC模块各司其职,不要参杂无关的东西。其实最主要的就是对业务的熟悉吧,把要实现的功能进行合理划分抽象基本就可以写出不错的代码了
④ android本身即是MVC了,所以我觉得可以发挥的地方是这三个模块的解耦和模块内的设计,比如怎么设计自定义的组件(builder模式等),组件能否与业务和呈现分离;能否用基类等方式设计抽象出比如activity生命周期回调,异步线程调用的共同的流程;用style和include等方法尽量让布局文件易于维护和复用。闭包等概念都能让你设计出更好的模型。这些东西在Android 源码和类似 efficient java中都能学到。我目前在做公司三个APP的合并,抽象出可以复用的业务逻辑和工具性的代码作为lib,也就是androidstudio里的module, 也是觉得要耗费一番精力。
以上是关于android开发三大框架的主要内容,如果未能解决你的问题,请参考以下文章