Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
X

xUtils3

> 编程语言
Open source

Android orm, bitmap, http, view inject...

5.9K stars0 likes0 views
WebsiteGitHub

About

Android orm, bitmap, http, view inject...

xUtils3简介

xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(251K), 并且特性强大, 方便扩展.

1. orm: 高效稳定的orm工具, 使得http接口实现时更方便的支持cookie和缓存.

  • 灵活的, 类似linq表达式的接口.
  • 和greenDao一致的性能.

2. http(s): 基于UrlConnection, Android4.4以后底层为okHttp实现.

  • 请求协议支持11种谓词: GET,POST,PUT,PATCH,HEAD,MOVE,COPY,DELETE,OPTIONS,TRACE,CONNECT
  • 支持超大文件(超过2G)上传
  • 支持断点下载(如果服务端支持Range参数,客户端自动处理断点下载)
  • 支持cookie(实现了domain, path, expiry等特性)
  • 支持缓存(实现了Cache-Control, Last-Modified, ETag等特性, 缓存内容过多时使用过期时间+LRU双重机制清理)
  • 支持异步和同步(可结合RxJava使用)调用

3. image: 有了http(s)及其下载缓存的支持, image模块的实现相当的简洁.

  • 支持内存缓存, 磁盘缓存(缩略图和原图), 并且支持回收被view持有, 但被MemCache移除的图片, 减少页面回退时的闪烁.
  • 支持在ListView滑动时, 自动停止被回收复用的item对应的下载任务(再次下载时断点续传)
  • 支持webp, gif(部分比较老的系统只展示静态图)
  • 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...

4. view注解: view注解模块仅仅400多行代码却灵活的支持了各种View注入和事件绑定.

  • 事件注解支持且不受混淆影响...(参考混淆配置)
  • 支持绑定拥有多个方法的listener

使用Gradle构建时添加以下依赖即可:

implementation 'org.xutils:xutils:3.9.0'

混淆配置参考示例项目sample的配置

这里可以下载aar文件

常见问题:

  1. 更好的管理图片缓存: https://github.com/wyouflf/xUtils3/issues/149
  2. Cookie的使用: https://github.com/wyouflf/xUtils3/issues/125
  3. 关于query参数? http请求可以通过 header, url, body(请求体)传参; query参数是url中问号(?)后面的参数.
  4. 关于body参数? body参数只有PUT, POST, PATCH, DELETE(老版本RFC2616文档没有明确指出它是否支持, 所以暂时支持)请求支持.
  5. 自定义Http参数对象和结果解析: https://github.com/wyouflf/xUtils3/issues/191
  6. 设置了http超时时间为5s但任然等待15s左右: GET请求失败后默认会重试2次, 可以通过setMaxRetryCount(0)来防止请求自动重试.
  7. @Event注解同一个id子类的事件会覆盖父类, onClickListener和onItemClickListener默认屏蔽了双击这种手机上不常用操作, 如需要双击支持可以自己setOnClickListener.

使用前配置

需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
初始化
// 在application的onCreate中初始化
@Override
public void onCreate() {
    super.onCreate();
    x.Ext.init(this);
    x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
    ...
}

使用@Event事件注解(@ContentView, @ViewInject等更多示例参考sample项目)

/**
 * 1. 方法必须私有限定,
 * 2. 方法参数形式必须和type对应的Listener接口一致.
 * 3. 注解参数value支持数组: value={id1, id2, id3}
 * 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.
 **/
@Event(value = R.id.btn_test1,
        type = View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
private void onTest1Click(View view) {
...
}

使用数据库(更多示例参考sample项目)

…

访问网络(更多示例参考sample项目)

如果你只需要一个简单的网络请求:

…

`

json或protobuf类型请求的处理

…

带有缓存的请求示例:

…

绑定图片(更多示例参考sample项目)

…

关于作者

  • Email: [email protected], [email protected]
  • 有任何建议或者使用中遇到问题都可以给我发邮件, 你也可以加入QQ群:330445659(已满), 275967695, 257323060, 384426013, 176778777, 169852490, 261053948, 330108003, 技术交流,idea分享 _

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Java

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言