一.重要概念
1.Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。
2.适用场景:Volley适合处理数据量小、操作频繁的网络操作。
3.分类:Volley大体上分为4种:
3.1.StringRequest:用于请求String字符串
3.2.JsonRequest:用于请求JSON字符串
3.3.ImageRequest:用于请求图片,但不推荐
3.4.ImageLoder:用于请求图片,带有二级缓存,推荐用它,此外,还可以用NetworkImageView。
3.5自定义reqiuest.
二.具体步骤
1.创建请求队列对象
2.创建请求对象
3.把请求对象加入队列中
4.设置取消请求(比如按返回键取消请求时)
5.由于执行网络操作,必须在清单文件中加入INTERNET权限
三.代码实现:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
public class MainActivity extends AppCompatActivity {
private TextView textView;
private RequestQueue requestQueue;
private StringRequest stringRequest;
private String path="http://www.baidu.com";
private String TAG="TAG";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView= (TextView) findViewById(R.id.textView);
// 第一步: 创建请求队列,通过Volley.newRequestQueue(this)得到.
requestQueue = Volley.newRequestQueue(this);
// 第二步:创建字符串请求对象
/**
1参:请求方式
2参:路径
3参:请求成功时回调的方法
4参:请求失败时回调的方法
*/
stringRequest = new StringRequest(Request.Method.GET, path, new Response.Listener<String>() {
@Override
// 请求成功时回调的方法
public void onResponse(String s) {
textView.setText(s);
}
},
// 请求失败时回调的方法,直接打印错误即可
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
volleyError.printStackTrace();
Toast.makeText(MainActivity.this, volleyError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
// 第三步: 将字符串对象加入请求队列中
requestQueue.add(stringRequest);
// 第四步: 设置标签,方便取消请求
stringRequest.setTag(TAG);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 销毁活动时取消请求,最后在清单文件中加入网络权限
requestQueue.cancelAll(TAG);
}
}
这样,请求到的字符串会显示在TextView上.