xUtils 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
xUtils 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
xUtils 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache 2.0
开发语言 Java 查看源码 »
操作系统 Android
软件类型 开源软件
开源组织
地区 国产
投 递 者 红薯
适用人群 未知
收录时间 2013-07-28

软件简介

## 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构建时添加以下依赖即可:
```javascript
implementation 'org.xutils:xutils:3.9.0'
```

#### 混淆配置参考示例项目sample的配置
[这里可以下载aar文件](http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/)


### 常见问题:
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.

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

### 使用@Event事件注解(@ContentView, @ViewInject等更多示例参考sample项目)
```java
/**
 * 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项目)
```java
Parent test = db.selector(Parent.class)
                    .where("id", "in", new int[]{1, 3, 6})
                    .or("age", "<", 29)
                    .findFirst();
long count = db.selector(Parent.class)
                    .where("name", "LIKE", "w%")
                    .and("age", ">", 32)
                    .count();
List<Parent> testList = db.selector(Parent.class)
                    .where("id", "between", new String[]{"1", "5"})
                    .findAll();
List<DbModel> list = db.selector(Child.class)
                    .where("age", "<", 18)
                    .groupBy("parentId")
                    .having(WhereBuilder.b("COUNT(parentId)", ">", 1))
                    .select("parentId, COUNT(parentId) as childNum")
                    .findAll();
```

### 访问网络(更多示例参考sample项目)
#### 如果你只需要一个简单的网络请求:
```java
@Event(value = R.id.btn_test2)
private void onTest2Click(View view) {
    RequestParams params = new RequestParams("https://www.baidu.com/s");
    // params.setSslSocketFactory(...); // 如果需要自定义SSL
    params.addQueryStringParameter("wd", "xUtils");
    x.http().get(params, new Callback.CommonCallback<String>() {
        @Override
        public void onSuccess(String result) {
            Toast.makeText(x.app(), result, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(Throwable ex, boolean isOnCallback) {
            Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancelled(CancelledException cex) {
            Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFinished() {

        }
    });
}
````
#### json或protobuf类型请求的处理
```java
/**
 * 自定义实体参数类请参考:
 * 请求注解 {@link org.xutils.http.annotation.HttpRequest}
 * 请求注解处理模板接口 {@link org.xutils.http.app.ParamsBuilder}
 *
 * 需要自定义类型作为callback的泛型时, 参考:
 * 响应注解 {@link org.xutils.http.annotation.HttpResponse}
 * 响应注解处理模板接口 {@link org.xutils.http.app.ResponseParser}
 *
 * 示例: 查看 org.xutils.sample.http 包里的代码
 */
JsonDemoParams params = new JsonDemoParams();
params.wd = "xUtils";
// 有上传文件时使用multipart表单, 否则上传原始文件流.
// params.setMultipart(true);
// 上传文件方式 1
// params.uploadFile = new File("/sdcard/test.txt");
// 上传文件方式 2
// params.addBodyParameter("uploadFile", new File("/sdcard/test.txt"));
Callback.Cancelable cancelable
       = x.http().get(params,
       /**
       * 1. callback的泛型:
       * callback参数默认支持的泛型类型参见{@link org.xutils.http.loader.LoaderFactory},
       * 例如: 指定泛型为File则可实现文件下载, 使用params.setSaveFilePath(path)指定文件保存的全路径, 默认支持断点续传(采用了文件锁防止多线程/进程修改文件,及文件末端校验续传文件的一致性).
       * 
       * 自定义callback的泛型支持方案1, 自定义某一Class的转换(不够灵活): 
       * 结合PrepareCallback的两个泛型参数, 第一个泛型参数类型使用LoaderFactory已经支持的, 第二个泛型参数作为最终输出, 需要在prepare方法中自己实现.
       * 一个稍复杂的例子可以参考{@link org.xutils.image.ImageLoader}
       *
       * 自定义callback的泛型支持方案2, 自定义一类数据的自动转化: 
       * 将注解@HttpResponse加到自定义返回值类型上, 实现自定义ResponseParser接口来统一转换.
       * 如果返回值是json/xml/protobuf等数据格式, 那么利用第三方的json/xml/protobuf等工具将十分容易定义自己的ResponseParser.
       * 如示例代码{@link org.xutils.sample.http.JsonDemoResponse}, 可直接使用JsonDemoResponse作为callback的泛型.
       *
       * 2. callback的组合:
       * 可以用基类或接口组合个种类的Callback, 见{@link org.xutils.common.Callback}.
       * 例如:
       * a. 组合使用CacheCallback将使请求检测缓存或将结果存入缓存(仅GET和POST请求生效).
       * b. 组合使用PrepareCallback的prepare方法将为callback提供一次后台执行耗时任务的机会, 然后将结果给onCache或onSuccess.
       * c. 组合使用ProgressCallback将提供进度回调.
       * 可参考{@link org.xutils.image.ImageLoader} 或 示例代码中的 {@link org.xutils.sample.download.DownloadCallback}
       *
       * 3. 请求过程拦截或记录日志: 参考 {@link org.xutils.http.app.RequestTracker}
       *
       * 4. 请求Header获取: 参考 {@link org.xutils.sample.http.JsonResponseParser} 或 {@link org.xutils.http.app.RequestInterceptListener}
       *
       * 5. 其他(线程池, 超时, 重定向, 重试, 代理等): 参考 {@link org.xutils.http.RequestParams}
       *
       **/
       new Callback.CommonCallback<JsonDemoResponse>() {
           @Override
           public void onSuccess(JsonDemoResponse result) {
               Toast.makeText(x.app(), result.toString(), Toast.LENGTH_LONG).show();
           }

           @Override
           public void onError(Throwable ex, boolean isOnCallback) {
               //Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
               if (ex instanceof HttpException) { // 网络错误
                   HttpException httpEx = (HttpException) ex;
                   int responseCode = httpEx.getCode();
                   String responseMsg = httpEx.getMessage();
                   String errorResult = httpEx.getResult();
                   // ...
               } else { // 其他错误
                   // ...
               }
               Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
           }

           @Override
           public void onCancelled(CancelledException cex) {
               Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
           }

           @Override
           public void onFinished() {

           }
       });

// cancelable.cancel(); // 取消请求
```
#### 带有缓存的请求示例:
```java
JsonDemoParams params = new JsonDemoParams();
params.wd = "xUtils";
// 默认缓存存活时间, 单位:毫秒.(如果服务没有返回有效的max-age或Expires)
params.setCacheMaxAge(1000 * 60);
Callback.Cancelable cancelable
       // 使用CacheCallback, xUtils将为该请求缓存数据.
      = x.http().get(params, new Callback.CacheCallback<JsonDemoResponse>() {

   private boolean hasError = false;
   private String result = null;

   @Override
   public boolean onCache(JsonDemoResponse result) {
      // 得到缓存数据, 缓存过期后不会进入这个方法.
      // 如果服务端没有返回过期时间, 参考params.setCacheMaxAge(maxAge)方法.
        //
        // * 客户端会根据服务端返回的 header 中 max-age 或 expires 来确定本地缓存是否给 onCache 方法.
        //   如果服务端没有返回 max-age 或 expires, 那么缓存将一直保存, 除非这里自己定义了返回false的
        //   逻辑, 那么xUtils将请求新数据, 来覆盖它.
        //
        // * 如果信任该缓存返回 true, 将不再请求网络;
        //   返回 false 继续请求网络, 但会在请求头中加上ETag, Last-Modified等信息,
        //   如果服务端返回304, 则表示数据没有更新, 不继续加载数据.
        //
        this.result = result;
        return false; // true: 信任缓存数据, 不在发起网络请求; false不信任缓存数据.
   }

   @Override
   public void onSuccess(JsonDemoResponse result) {
      // 注意: 如果服务返回304 或 onCache 选择了信任缓存, 这时result为null.
        if (result != null) {
          this.result = result;
      }
   }

   @Override
   public void onError(Throwable ex, boolean isOnCallback) {
      hasError = true;
      Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
      if (ex instanceof HttpException) { // 网络错误
         HttpException httpEx = (HttpException) ex;
         int responseCode = httpEx.getCode();
         String responseMsg = httpEx.getMessage();
         String errorResult = httpEx.getResult();
         // ...
      } else { // 其他错误
         // ...
      }
   }

   @Override
   public void onCancelled(CancelledException cex) {
      Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
   }

   @Override
   public void onFinished() {
      if (!hasError && result != null) {
         // 成功获取数据
         Toast.makeText(x.app(), result, Toast.LENGTH_LONG).show();
      }
   }
});
```

### 绑定图片(更多示例参考sample项目)
```java
x.image().bind(imageView, url, imageOptions);

// assets file
x.image().bind(imageView, "assets://test.gif", imageOptions);

// resources file
x.image().bind(imageView, "res://" + R.minimap.test, imageOptions);

// local file
x.image().bind(imageView, new File("/sdcard/test.gif").toURI().toString(), imageOptions);
x.image().bind(imageView, "/sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:/sdcard/test.gif", imageOptions);

x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
// 用来获取缓存文件
x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});
```
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(28) 发布并加入讨论🔥
发表了资讯
2020/08/04 10:21

xUtils 3.9.0 发布,Android 工具库

感谢关注xUtils的开发者最近一段时间给予的热心反馈,近期优化和处理了很多大家反馈的细节问题, 更新内容如下: 3.9.0 版本主要更新内容: gif图片默认参数优化, 播放更流畅 将混淆配置打包在aar中, 不必再为xUtils配置混淆规则. 允许自定义线程池looper 同时代码仓库已同步至码云: https://gitee.com/wyouflf/xUtils3

3
10
发表了资讯
2019/10/19 13:19

xUtils 3.8.3 发布,Android 工具库

感谢关注xUtils的开发者最近一段时间给予的热心反馈,近期优化和处理了很多大家反馈的细节问题, 更新内容如下: 3.8.3版本主要更新内容: Http默认重定向实现支持相对路径 优化db初始化接口, 增加TableEntity#createTableIfNotExists(), 方便主动创建表(默认首次存入数据前创建) 更好的为protobuf请求提供缓存支持 3.6.19版本主要更新内容: 支持res文件的资源图片加载, 图片加载回调优化 修复调用api停止gif播放后, 重试开始不播放...

4
8
发表了资讯
2019/09/18 20:08

xUtils 3.6.19 发布,Android 工具库

感谢关注xUtils的开发者最近一段时间给予的热心反馈,3.5.0之后很长一段时间没有更新, 最近优化和处理了很多大家反馈的细节问题. 近期3.6.19版本主要更新内容: 支持res文件的资源图片加载, 图片加载回调优化 修复调用api停止gif播放后, 重试开始不播放的问题 修复rfc2616要求上行必须提供有效的Content-Length的问题 替换系统api标记为@deprecated的方法 其他多处性能和错误提示优化 同时代码仓库同步至码云: https://gitee.com...

3
13
发表了资讯
2017/04/05 05:33

xUtils 3.5.0发布 - Android 工具库

xUtils3简介 * xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展: - `稳定的基石`: `AbsTask`和统一的回调接口`Callback`, 任何异常, 即使你的回调方法实现有异常都会进入`onError`, 任何情况下`onFinished`总会让你知道任务结束了. - 基于高效稳定的`orm`工具, `http`模块得以更方便的实现cookie(支持domain, path, expiry等特性)和 缓存(支持Cache-Control, Last-Modified, ETag等...

6
30
发表了资讯
2015/12/25 00:00

xUtils 3.1.22 更新 修复API 14之前的系统偶发EOF问题

感谢关注xUtils的网友最近一段时间给予的热心反馈,最近优化和处理了很多大家反馈的细节问题. 近期主要更新内容: * 修复Android4.4之前HttpUrlConnection偶发的EOFException问题 * 优化ObjectLoader, 更好的支持List类型的泛型 * 支持HTTP请求的数组参数(可添加重复的参数名) * 其他稳定性和接口优化 __________________________________________ 3.0是一次彻底的重构, api发生了很大变化, 但是仍然保持着xUtils一贯的简介风格,...

14
26
发表了资讯
2015/11/05 00:00

xUtils 3.0 发布 api重构 数据库操作性能大幅提升

感谢关注xUtils的网友最近一段时间给予的热心反馈,最近工作比较忙, 很多大家发来的邮件都没有及时回复, 稍后我会回复大家。 3.0是一次彻底的重构, api发生了很大变化, 但是仍然保持着xUtils一贯的简介风格, 并且新的api更加简单, 更具扩展性. 新的特性: HTTP实现替换HttpClient为UrlConnection, 更好的兼容Android 6.0, 自动解析回调泛型, 更安全的断点续传策略. 支持标准的Cookie策略, 区分domain, path... 事件注解去除不常用...

30
54
发表了资讯
2014/04/19 00:00

xUtils 2.5.4 发布,重构事件注入模型.

感谢关注xUtils的网友最近一段时间给予的热心反馈,最近工作比较忙, 很多大家发来的邮件都没有及时回复, 稍后我会回复大家。 最近主要更新内容: * 使用动态代理重构事件注入模型, 使用方式没有变化, 自定义事件更加方便. * 其他细节优化详情见: https://github.com/wyouflf/xUtils/commits/master xUtils简介 xUtils 包含了很多实用的android工具。 xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全...

8
52
发表了资讯
2014/02/28 00:00

xUtils 2.4.7 发布, 修复上传多文件到php的bug

感谢关注xUtils的网友最近一段时间给予的热心反馈,最近工作比较忙, 很多大家发来的邮件都没有及时回复, 稍后我会回复大家。 最近主要更新内容: * 修复BitmapUtils下载错误文件后,一直使用错误文件的问题. * 修复一处来自HttpClient的文件上传bug. * 加入@ContentView注解,用于Activity,见sample. * DbUtils写操作加入锁,防止多线程操作写入异常. * 更多详情见: https://github.com/wyouflf/xUtils/commits/master xUtils简...

5
25
发表了资讯
2013/12/10 00:00

xUtils 2.4.2 发布,细节优化

感谢关注xUtils的网友最近一段时间给予的热心反馈,自从2.3.1里程碑杯发布功能已非常稳定。 最近主要更新内容: * bitmap模块取消清除缓存时displayConfig参数 。 * 更新DbUpgradeListener,更加灵活的升级接口支持。 * @ViewInject注解和事件添加parentId属性支持。 * 更多详情见: https://github.com/wyouflf/xUtils/commits/master xUtils简介 xUtils 包含了很多实用的android工具。 xUtils 最初源于Afinal框架,进行了大量重...

10
32
发表了资讯
2013/12/01 00:00

xUtils 2.3.6 发布-细节优化

感谢关注xUtils的网友最近一段时间给予的热心反馈,自从2.3.1里程碑杯发布已经功能已非常稳定。最近一周主要进行了一些细节上的优化。 2.3.6主要更新内容: * BitmapLoadCallBack添加onLoading回调,用于显示进度。 * @Table注解添加execAfterTableCreated属性,可自定义表创建之后要执行的sql。 * 在sd卡上创建数据库文件时目录不存在时自动创建。 * Bitmap模块添加图片自动旋转设置。 * 更多详情见: https://github.com/wyou...

7
27
发表了资讯
2013/11/25 00:00

xUtils 2.3.1 发布-里程碑版本,更加稳定...

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定。 希望使用1.*.*等早期版本的用户升级至最新的版本, 以使后期继续升级更加方便, 早期版本功能不够完善api经常变动, 未考虑兼容问题. 升级到最新版以后可以获得更稳定易用的功能和更好的兼容保证. 2.3.1主要更新内容: * HttpUtils模块优化url编码方案,自动处理path和query中的空格。 * BitmapUtils默认支持读取assets中的...

13
30
发表了资讯
2013/11/20 00:00

xUtils 2.2.4 发布-细节优化,加速bitmap加载...

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定。 希望使用1.*.*等早期版本的用户升级至最新的版本, 以使后期继续升级更加方便, 早期版本功能不够完善api经常变动, 未考虑兼容问题. 升级到最新版以后可以获得更稳定易用的功能和更好的兼容保证. 2.2.4主要更新内容: * 优化网络速度慢时加载过多bitmap下载任务使新任务长时间等待的问题 * HttpCache支持更多请求类型(默认...

10
29
发表了资讯
2013/11/12 00:00

xUtils 2.1.3 发布-细节优化,更多示例代码...

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定。 希望使用1.*.*等早期版本的用户升级至最新的版本, 以使后期继续升级更加方便, 早期版本功能不够完善api经常变动, 未考虑兼容问题. 升级到最新版以后可以获得更稳定易用的功能和更好的兼容保证. 2.1.3主要更新内容: * 新增HttpHandler增加getState方法获取请求状态 * 其他更新内容见:https://github.com/wyouflf/xUtils/...

8
26
发表了资讯
2013/11/09 00:00

xUtils 2.0 发布 - 资源注解支持,orm模块优化...

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定。 2.0主要更新内容: * 新增3个HTTP谓词支持(现在支持的有:GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT); * view注入新增3个事件支持,添加资源注解支持; * orm模块优化,列转换接口优化。 更多介绍,源码和示例代码下载:https://github.com/wyouflf/xUtils 详细更新记录见:https://githu...

12
27
发表了资讯
2013/11/06 00:00

Android工具库xUtils1.9.8发布-orm性能优化,图片加载优化...

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定。 1.9.8主要更新内容: * orm模块添加列类型转换接口,支持自定义类型字段作为列映射; * bitmap模块优化默认参数,取消默认动画,加载更快速。 * 有个别包名变化,eclipse或其他ide遇到包找不到的问题,重新引入即可。 更多介绍,源码和示例代码下载:https://github.com/wyouflf/xUtils 详细更新记录见:https://github....

11
48
发表了资讯
2013/11/03 00:00

xUitls 1.9.6 发布 - 大量细节优化,稳定易用

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定。 1.9.6主要更新内容:Bitmap加载动画有时重复出现的问题修复,加载过程优化; Http模块RequestCallBack等优化。 更多介绍,源码和示例代码下载:https://github.com/wyouflf/xUtils 详细更新记录见:https://github.com/wyouflf/xUtils/commits/master xUtils简介 xUtils 包含了很多实用的android工具。 xUtils 最初源于A...

18
42
发表了资讯
2013/10/30 00:00

xUtils 1.8.8 里程碑版发布- 建议更新

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定下来,接下来更新将会变缓,但会更有计划性,紧急更新除外(xUtils的用户最有体会,xUitls常常在用户反馈以后1, 2个小时可能就会立即更新)。 更多介绍,源码和示例代码下载:https://github.com/wyouflf/xUtils 详细更新记录见:https://github.com/wyouflf/xUtils/commits/master xUtils简介 xUtils 包含了很多实用的and...

8
22
发表了资讯
2013/10/28 00:00

xUtils 1.8.4 (Android工具库) 发布 - http模块优化

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化,同时修复和优化了大家反馈的一些问题。重要的变化有http请求返回更全面的结果信息;下载设置断点续下时,如果服务器不支持RANGE参数将自动重新开始... 更多介绍,源码和示例代码下载:https://github.com/wyouflf/xUtils 详细更新记录见:https://github.com/wyouflf/xUtils/commits/master xUtils简介 xUtils 包含了很多实用的android工具。 xU...

6
65
发表了资讯
2013/10/17 00:00

xUtils 1.6.6 (Android工具库) 发布 - Bitmap模块优化

感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期在bitmap模块进行了很多优化,同时修复和优化了大家反馈的一些问题。 更多介绍,源码和示例代码下载:https://github.com/wyouflf/xUtils 详细更新记录见:https://github.com/wyouflf/xUtils/commits/master xUtils简介 xUtils 包含了很多实用的android工具。 xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持...

19
103
发表了资讯
2013/10/07 00:00

xUtils 1.5.1 (Android工具库) 稳定版发布

最近一段时间处理了大量用户的反馈,在易用性和稳定性上得到了很大的提升,同时xUtils也将系统兼容性由原来的 Android2.3.3(api 10) 降低到 Android2.2(api 8), 以满足更多用户的需求。 xUtils简介 xUtils 包含了很多实用的android工具。 xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls最低兼容android...

14
59
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
28 评论
755 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部