今天来谈谈Xutils3()
调试环境: android studio
在谈Xutils3之前我们先来看看Xutils3
1:功能非常丰富,包含了很多实用的工具
2:Xutils3相对于xutils2对Android 6.0兼容更好了
3:支持超大文件上传(超过2G)上传,更全面的http请求协议支持(11种谓词)...
4:国内用户多,网上教程丰富
一:在我们的项目中快速配置Xutils 3
Xutils3 在android studio 中配置非常简单:
第一步 添加框架:
右击你的项目--选择Open Module Settings --选择Dependencies--选择右上角的“+”号--选择Library dependency--在Choose Library Dependencies对话框里即可下查找下载框架了。
第二步 添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />第三步在Application里初始化
package com.xutils.xutils3;
import android.app.Application;
import org.xutils.x;
/**
* application
*
* Created by Administrator on 2017/5/16.
*/
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);//初始化
x.Ext.setDebug(BuildConfig.DEBUG);//是否输出debug日志, 开启debug会影响性能
}
}
补充:Application使用方法(在androidManifest 里添加 android:name=".MyApplication")
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name=".MyApplication"
android:theme="@style/AppTheme">
<activity android:name=".MainAty">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>二:XUtils3 四大核心模块
XUtils3 一共有四大核心模块它们分别是:
注解模块
网络模块
图片加载模块
数据库模块
下面我们结合Demo依次介绍它们
1:注解模块
我用的注解有以下两种,想了解更多参考官方Demo
@ViewInject(控件初始化)、@Event(按钮设置点击事件)
public class MainAty extends AppCompatActivity {
@ViewInject(R.id.bn_picture)//图片 控件初始化
private Button bn_picture;
@Event(value ={R.id.bn_picture,R.id.bn_file})//设置点击事件
private void onClick(View view){
switch (view.getId()){
case R.id.bn_picture:
Toast.makeText(this,"图片",Toast.LENGTH_SHORT).show();
break;
case R.id.bn_file:
Toast.makeText(this,"下载文件",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aty_main);
x.view().inject(this);//初始化xutils3
}
}
2:网络模块
我将从以下几方面介绍XUtils3的网络模块
GET请求
/**
* 请求网络
*/
private void initHttp(){
String url="https://hao.qq.com/";
ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.setMessage("请稍后");
RequestParams params=new RequestParams(url);
params.addQueryStringParameter("username","123456");
params.addQueryStringParameter("password","werfd");
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.e("Xutils3请求:","请求成功的"+result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("Xutils3请求:","请求失败的"+ex);
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("Xutils3请求:","取消的"+cex);
}
@Override
public void onFinished() {
Log.e("Xutils3请求:","完成的");
}
});
}带有缓存的GET请求
/**
* 请求网络
*/
private void initHttp() {
String url = "https://hao.qq.com/";
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("请稍后");
RequestParams params = new RequestParams(url);
params.addQueryStringParameter("username", "123456");
params.addQueryStringParameter("password", "werfd");
params.addHeader("head", "txderef"); //为当前请求添加一个头
x.http().get(params, new Callback.CacheCallback<String>() {
@Override
public boolean onCache(String result) {
//在setCacheMaxAge设置范围(上面设置的是60秒)内,如果再次调用GET请求,
//返回true:缓存内容被返回,相信本地缓存,返回false:缓存内容被返回,不相信本地缓存,仍然会请求网络
Log.i("cache",result);
return false;
}
@Override
public void onSuccess(String result) {
Log.e("Xutils3请求:", "请求成功的" + result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("Xutils3请求:", "请求失败的" + ex);
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("Xutils3请求:", "取消的" + cex);
}
@Override
public void onFinished() {
Log.e("Xutils3请求:", "完成的");
}
//result:缓存内容
});
}
POST请求
/**
* 请求网络
*/
private void initHttp(){
String url="https://hao.qq.com/";
ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.setMessage("请稍后");
RequestParams params=new RequestParams(url);
params.addQueryStringParameter("username","123456");
params.addQueryStringParameter("password","werfd");
params.addHeader("head","txderef"); //为当前请求添加一个头
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.e("Xutils3请求:","请求成功的"+result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("Xutils3请求:","请求失败的"+ex);
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("Xutils3请求:","取消的"+cex);
}
@Override
public void onFinished() {
Log.e("Xutils3请求:","完成的");
}
});
}其他网络请求方式
/**
* 请求网络
*/
private void initHttp() {
String url = "https://hao.qq.com/";
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("请稍后");
RequestParams params = new RequestParams(url);
params.addParameter("username", "123456");
params.addParameter("password", "werfd");
x.http().request(HttpMethod.PUT, params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.e("Xutils3请求:", "请求成功的" + result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("Xutils3请求:", "请求失败的" + ex);
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("Xutils3请求:", "取消的" + cex);
}
@Override
public void onFinished() {
Log.e("Xutils3请求:", "完成的");
}
//result:缓存内容
});
}

本文介绍了XUtils3的安装配置及四大核心模块:注解、网络、图片加载和数据库。重点讲解了网络模块的GET、POST请求及缓存机制。
2万+

被折叠的 条评论
为什么被折叠?



