xutils3
导入xutils3.0的module包,下载地址如下:
然后project的gradle里面:
dependencies { classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' }在application中加上:
x.Ext.init(this); // 这一步之后, 我们就可以在任何地方使用x.app()来获取Application的实例了. x.Ext.setDebug(false); // 是否输出debug日志这样就可以使用xutils3.0了。
数据库模块:
@Table(name = "userinfo")//表名
public class UserInfo {
@Column(name = "id",isId = true)//字段名 是否是ID
private String id ;
@Column(name = "username")
private String username ;
@Column(name = "phone")
private String phone ;
@Column(name = "sex")
private int sex ; //0 nv 1 nan
@Column(name = "nickname")
private String nickname ;
@Column(name = "password")
private String password ;
}
先写一个获取DbManager的工具类。
public class Dbutil {
private static DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
// 数据库的名字
.setDbName("dbname")
// 保存到指定路径
// .setDbDir(new
// File(Environment.getExternalStorageDirectory().getAbsolutePath()))
// 数据库的版本号
.setDbVersion(1)
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
// 开启WAL, 对写入加速提升巨大
db.getDatabase().enableWriteAheadLogging();
}
})
// 数据库版本更新监听
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager dbManager, int arg1, int arg2) {
LogUtil.e("数据库版本更新了!");
}
});
public static DbManager getManger(){
DbManager manager = x.getDb(daoConfig);
return manager;
}
}
Dbutil.getManger().save(userInfo);
删除数据:
Dbutil.getManger().delete(this.userInfo);
Dbutil.getManger().update(userInfo);
Dbutil.getManger().selector(UserInfo.class).where("id", "=", 1).findFirst();
图片加载:
x.image().bind(imgview,imgurl);
还有一种没有view时的情况:
x.image().loadFile(imgurl,options,callback)
options:
options = new ImageOptions.Builder()
// 图片缩放模式
//.setImageScaleType(ScaleType.CENTER_CROP)
// 下载中显示的图片
.setLoadingDrawableId(R.drawable.default_load)
// 下载失败显示的图片
.setFailureDrawableId(R.drawable.default_load)
.setAutoRotate(true)
.setUseMemCache(false)
.setIgnoreGif(false)
// 得到ImageOptions对象
.build();
网络模块的使用
xUtils3网络模块大大方便了在实际开发中网络模块的开发,xUtils3网络模块大致包括GET请求、POST请求、如何使用其他请求方式、上传文件、下载文件、使用缓存等功能,下面将做一一说明:
1)GET请求
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
下面我们来看下带有缓存的GET请求,POST请求和其他请求方式类似,后面就不再赘述:
带有缓存的GET请求:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
上面onCache方法中需要注意的几点:
a)如果服务端没有返回过期时间,参考params.setCacheMaxAge(maxAge)方法。
b)客户端会根据服务端返回的header中max-age或expires来确定本地缓存是否给onCache方法。如果服务端没有返回max-age或expires,那么缓存将一直保存,除非这里自己定义了返回false,那么xUtils将请求新数据, 来覆盖它。
c)如果信任该缓存返回true,将不再请求网络。返回false继续请求网络,但会在请求头中加上ETag,Last-Modified等信息。如果服务端返回304,则表示数据没有更新,不继续加载数据。
2)POST请求
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
3)其他网络请求方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
4)上传文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
5)下载文件
这里以下载apk为例进行说明,apk下载完成后,自动调用系统的安装方法。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38