六款值得推荐的Android开源框架简介

六款值得推荐的Android开源框架简介

  技术不再多,知道一些常用的、不错的就够了。下面就是最近整理的“性价比”比较高的Android开源框架,应该是相对实用的。

  1、volley 

  项目地址 https://github.com/smanikandan14/Volley-demo

  • JSON,图像等的异步下载;
  • 网络请求的排序(scheduling)
  • 网络请求的优先级处理
  • 缓存
  • 多级别取消请求
  • 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

  2、android-async-http

  项目地址:https://github.com/loopj/android-async-http,文档介绍:http://loopj.com/android-async-http/ 

  • 在匿名回调中处理请求结果
  • 在UI线程外进行http请求
  • 文件断点上传
  • 智能重试
  • 默认gzip压缩
  • 支持解析成Json格式
  • 可将Cookies持久化到SharedPreferences

  3、Afinal框架

  项目地址:https://github.com/yangfuhai/afinal

  主要有四大模块:

  • 数据库模块:Android中的orm框架,使用了线程池对sqlite进行操作。
  • 注解模块:Android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
  • 网络模块:通过httpclient进行封装http数据请求,支持Ajax方式加载,支持下载、上传文件功能。
  • 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和Android容器快速滑动时候出现的图片错位等现象。

  FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。FinalBitmap的内存管理使用lru算法,没有使用弱引用(Android2.3以后Google已经不建议使用弱引用,Android2.3后强行回收软引用和弱引用,详情查看Android官方文档),更好的管理bitmap内存。FinalBitmap可以自定义下载器,用来扩展其他协议显示网络图片,比如ftp等。同时可以自定义bitmap显示器,

  在imageview显示图片的时候播放动画等(默认是渐变动画显示)。

  4、xUtils框架

  项目地址:https://github.com/wyouflf/xUtils,主要有四大模块:

  数据库模块:

  • Android 中的 orm 框架,一行代码就可以进行增删改查;
  • 支持事务,默认关闭;
  • 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
  • 支持绑定外键,保存实体时外键关联实体自动保存或更新;
  • 自动加载外键关联实体,支持延时加载;
  • 支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。          

  注解模块:

  • Android中的 ioc 框架,完全注解方式就可以进行 UI,资源和事件绑定;
  • 新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
  • 目前支持常用的20种事件绑定,参见 View Common Event Listener 类和包com.lidroid.xutils.view.annotation.event。

  网络模块:

  • 支持同步,异步方式的请求;
  • 支持大文件上传,上传大文件不会oom;
  • 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
  • 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
  • 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

  图片缓存模块:

  • 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和Android容器快速滑动时候出现的图片错位等现象;
  • 支持加载网络图片和本地图片;
  • 内存管理使用lru算法,更好的管理bitmap内存;
  • 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。

  5、ThinkAndroid

  项目地址:https://github.com/white-cat/ThinkAndroid

  主要有以下模块:

  • MVC模块:实现视图与模型的分离。
  • ioc模块:Android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。 
  • 数据库模块:Android中的orm框架,使用了线程池对sqlite进行操作。  
  • http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。
  • 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置
  • 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和Android容器快速滑动时候出现的图片错位等现象。
  • 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。
  • 日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印
  • 下载器模块:可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停、删除等等。
  • 网络状态检测模块:当网络状态改变时,对其进行检。

  6、LoonAndroid

  项目地址:https://github.com/gdpancheng/LoonAndroid

  主要有以下模块:

  • 自动注入框架(只需要继承框架内的APP既可)
  • 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
  • 网络请求模块(继承了基本上现在所有的http请求)
  • eventbus(集成一个开源的框架)
  • 验证框架(集成开源框架)
  • Json解析(支持解析成集合或者对象)
  • 数据库(不知道是哪位写的 忘记了)
  • 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
  • 自动更新模块
  • 一系列工具类

  其中的 Volley 在2013 年有研究过,扩展性非常好,个人比较喜欢的风格。其他如 Android-async-http、Afinal 也相当不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android应用程序的组件,Android基础之应用程序组件

Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全。Android应用程序组件的主要类型有:活动(Activity),服务(Service),广播接收者(Broadcast Receiver)…

数据库杂谈(一)——数据库基本概念

文章目录1 数据库基本概念1.1数据库和数据库管理系统1.2 数据库系统和文件系统1.3 数据模型1.4 数据库三级模式和两级独立性1.4.1 三级模式1.4.2 二级映像功能1.4.3 数据独立性1.5 数据库发展历史及分类1.6 数据库系统的组成和生命周期1.6.1 三个概念1.6.2 生命周期1.6.3 存储管…

【转】Java删除文件夹和文件

原文网址:http://kxjhlele.iteye.com/blog/323657 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1&#xff0c…

webapi返回字符串,解决自动加双引号或下划线的问题

返回类型改为HttpResponseMessage类型 [HttpGet] public HttpResponseMessage Test() {HttpResponseMessage responseMessage new HttpResponseMessage { Content new StringContent("你要返回的字符串", Encoding.GetEncoding("UTF-8"), "text/pla…

数据库杂谈(二)——数据模型

2 数据模型 摘要:数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是…

android编译系统apk文件,VS2012中MonoForAndroid打包编译APK文件详细图文教程

本文用于介绍Visual Studio 2012中Xamarin Mono For Android 如何打包编译APK文件,从如何创建Android项目,到如何启动调试,都会逐个配图讲解。1 新建项目2 选择安卓3 选择安卓程序4 随便取名和设置存放路径5 确定1 创建完一个新的项目2 点击“…

判断程序是否已经运行

近段时间,需要写一个小功能,就是需要判断程序是否已经运行。某个程序安装后,也许被多个用户运行。那怎样判断当前用户已经运行了此程序了呢?下面是Insus.NET的做法,就是:《VB.NET WinForm获取运行程序用户名…

hyper虚拟机下对centos进行动态扩容

在关机状态下,可增加centos的磁盘空间,但是增加的这部分空间,还需在centos完成以下操作,才能使用1.查看现有的硬盘分区(现在空间没有变大)#df -h2.对新增的硬盘空间做新增分区(硬盘数没有增加&a…

浅谈缓存技术在ASP.NET中的运用

本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可&#…

Git快速入门+复习笔记

对于学习编程的同志来说,学习Git是必不可少的一项技术,如果你是第一次观看我的文章,欢迎关注我的频道,我会分享更多有趣的知识。 文章目录1 目标2 概述2.1 开发中的实际场景2.2 版本控制器的方式2.3 工作流程图3 Git安装和常用命令…

android程序名称,Android应用程序名称带上标

您需要使用ISO-8859-1 / UTF-8字符来完成插入(在您的情况下)上标3.清单HTML ISO-8859-1 Reference个实体.例如在AndroidManifest.xml中android:hardwareAccelerated"true"android:icon"drawable/ic_launcher"android:label"Myapp" 或者使用HTML实…

阿里云部署Docker(5)----管理和公布您的镜像

出到这节,我在百度搜索了一下“阿里云部署Docker”,突然发现怎么会有人跟我写的一样呢?哦,原来是其它博客系统的爬虫来抓取,然后也不会写转载自什么什么的。所以,我最终明确为什么那些大咖的文章总会在文章…

spring security method security

spring security method security 参考 Spring Security 官方文档 http://www.concretepage.com/spring/spring-security/preauthorize-postauthorize-in-spring-security 方法调用安全 对应的注解EnableGlobalMethodSecurity,该注解放在GlobalMethodSecurityConfiguration的子…

Android浏览器速度测试,Android平台浏览器网页加载速度对比评测

参与测试的浏览器手机上网已经渐渐成为人们的一种习惯,无论在等公交时、乘地铁时、吃饭等餐时,很多朋友都习惯掏出手机简单浏览一下微博、人人、新闻网站等页面。移动网络的确为我们带来了莫大的便利,但网速和稳定性却是移动网络的硬伤。针对…

操作系统随笔(一)

你好朋友,当你点进来这份读书笔记时,我相信你不是无意中点进来就是对这一部分饶有兴趣,可惜的是,我也只是个普通的大学生,有时候对知识的见解获取没有屏幕前的你那么有天赋,所以在阅读完这篇文章的同时点个…

安装Fedora后

更新操作系统版本: https://fedoraproject.org/wiki/DNF_system_upgrade 靠谱; 设置ssh:ssh生成公钥私钥、默认root(.ssh/config)、chmod -R 600 .ssh (.ssh/config)Host * User root Protocol 2 ServerAliveInterval 30 shadowsocks客户端…

codeforces 483B Friends and Presents 解题报告

题目链接:http://codeforces.com/problemset/problem/483/B 题目意思:有两个 friends,需要将 cnt1 个不能整除 x 的数分给第一个friend,cnt2 个不能整除 y 的数分给第二个friend。x 和 y 都是素数来的。要求求出最小的 v&#xff…

并行计算随笔(一)

如果觉得本篇文章对你有所启发,请给我点个赞好吗,这对我很重要,谢谢 文章目录1 并行计算基础1.1 什么是并行计算1.1.1 对计算速度的需求1.1.2 并行计算1.1.3 并行计算的基本条件1.1.4 平行计算和分布式计算1.2 为什么需要并行计算1.3 并行计算…

命令行的形式运行php

转自:http://www.cnblogs.com/myjavawork/articles/1869205.html 注意:在安装php时需要将php 的安装目录加到环境变量 PATH 中 (右击我的电脑->属性->高级->环境变量, 如果存在 PATH 则在原来的 PATH 中加入你的PHP安装目录, 如果不存在则新建一…

LeetCode-18-4Sum

一、问题描述 给定一个数组S&#xff0c;和一个int类型的数target&#xff0c;在S中寻找四个数&#xff0c;这四个数之和为target。返回一个vector<vector<int>> 例子&#xff1a;S{1, 0, -1, 0, -2, 2}&#xff0c;target 0.返回结果为{{-1&#xff0c;0&#xf…